离散化的一道很经典的题

news/2024/10/13 0:18:38
  1. 区间和
    题目
    提交记录
    讨论
    题解
    视频讲解

假定有一个无限长的数轴,数轴上每个坐标上的数都是 0

现在,我们首先进行 n
次操作,每次操作将某一位置 x
上的数加 c

接下来,进行 m
次询问,每个询问包含两个整数 l
和 r
,你需要求出在区间 [l,r]
之间的所有数的和。

输入格式
第一行包含两个整数 n
和 m

接下来 n
行,每行包含两个整数 x
和 c

再接下来 m
行,每行包含两个整数 l
和 r

输出格式
共 m
行,每行输出一个询问中所求的区间内数字和。

数据范围
−109≤x≤109
,
1≤n,m≤105
,
−109≤l≤r≤109
,
−10000≤c≤10000
输入样例:
3 3
1 2
3 6
7 5
1 3
4 6
7 8
输出样例:
8
0
5
离散化的含义便是映射,把有关的数组下标映射为自然数0,1,2,3....或者1,2,3,4,5....,首先使用离散化的前提的条件便是值域跨度很大,但题目的输入和输出中牵扯到的数字下标没有这么大。例如本题:
值域范围为:1e9的范围,但本体在输入时先给某个下标加值,n最多便是1e5,而m每次询问有两个下标(索引),m的范围是1e5,故m * 2 + n 的范围便是3e5 + 10(这个10是为了防止数组越界的问题)。当然,如果数据范围什么时候变小了,大致是一个2*1e5的范围,就可以用我们常用到的前缀和来求解,这个离散化可以完美的使用我们的数组,保证所有的下标都与题目有联系。
附上c++代码:

include

include

include

using namespace std;
const int N = 300010;
typedef pair<int,int> PII;

int n,m;
int a[N],b[N];

vectorstu;
vectoraoi,aio;

int find(int x)
{
int l = 0,r = stu.size() - 1;

while(l < r)
{int mid = l + r >> 1;if(stu[mid] >= x)  r = mid;else    l = mid + 1;
}return r + 1;

}

int main()
{
scanf("%d%d", &n, &m);

for(int i = 0;i < n;i ++)
{int x,y;cin >> x >> y;stu.push_back(x);aoi.push_back({x,y});
}for(int j = 0;j < m;j ++)
{int l,r;cin >> l >> r;stu.push_back(l);stu.push_back(r);aio.push_back({l,r});
}sort(stu.begin(),stu.end());
stu.erase(unique(stu.begin(),stu.end()),stu.end());for(auto boy:aoi)a[find(boy.first)] += boy.second;for(int i = 1;i <= stu.size(); i ++)     b[i] = b[i-1] + a[i];for(auto riu:aio)printf("%d\n" , b[find(riu.second)] - b[find(riu.first) - 1]);return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70882.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

VLAN-IP实验

需求:1.PC1和PC3所在接口为access接口;属于VLAN 2 PC2-4-5-6处于同一网段:其中PC2可以访间Pc4-5-6 PC4可以访间Pc5不能访间PC6 Pc5不能访问Pc6 3.PC1-Pc3---192.168.0.0 24与PC2-4-5-6不在一个网段--192.168.1.0 24 4.所有Pc均使用DHcp禁取IP地址,且PC1可以正常访间Pc2-4-5-6 …

mobaxterm隔一段时间就断开连接

【解决方法】点击setting,选中SSH Keepalive即可

【安全服务】2024年我国新一代网络安全服务代表性厂商:新华三

新华三是新华三技术有限公司的全资子公司,成立于2017年3月,为国内信息安全领域的领导企业,致力于为国家信息安全提供安全可信的领先产品与解决方案、专业的网络安全服务和优质的信息安全人才培养体系。 新华三拥有安全服务团队人员500+人,网络安全服务类型包括安全增值服务…

【安全服务】2024年我国新一代网络安全服务代表性厂商:中通服

中通服成立于2006年,是一家网络安全综合服务提供商,提供全生命周期的网络安全一体化综合服务,是国家重大活动安全保障和网信安全工程建设国家队。目前拥有安全服务团队人员1600+人,网络安全服务类型包括评估、咨询、设计、集成实施、涉密施工、监理、运维、应急和培训等。主…

《使用Gin框架构建分布式应用》阅读笔记:p1-p19

《使用Gin框架构建分布式应用》学习第1天,p1-p19总结,总计19页。 一、技术总结 1.go get & go install 执行go get 或者 go install 命令后package会被安装到哪里?参考:https://go.dev/ref/mod#go-install VSCode结合WSL使用后,路径把人绕晕了。 二、英语总结 1.evang…

华为交换机配置-STP

1.STP上述环境中,只对交换机3、4连接pc的端口设置为access模式,pc1和pc2可以通信,但是上图所示的网络中存在环路,所以需要开启STP 1.命令 交换机1 <Huawei>sy Enter system view, return user view with Ctrl+Z. [Huawei]sysname SW1 //开启全局STP [sw1]stp enable …

2024-2025-1 20241305 《计算机基础与程序设计》第三周学习总结

作业信息这个作业属于哪个课程 如[2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里 2024-2025-1计算机基础与程序设计第三周作业这个作业的目标 1数字分类与计数法 2位置指数法 3进制转换 4模拟数据与数字数据 …

datawhale-大模型攻防比赛实践-第一次行动

最近刚好是在写智能信息安全的教程,最后一章准备讲内容安全,里面有一节探讨大模型安全的内容,刚好可以拿比赛的内容当案例。 首先,可以通过modelscope平台获得GPU使用权限。然后你就可以跑baseline了 我这里试着跑了一下,如果是GPU版本就比较流畅,CPU会被卡死。但是呢,一…