题意:给你一个数组,数组每次每个数都+1,有q次查询每一查询+L到+R中出现的所有不重复的数字个数。

+L到+R其实就相当于是0到+(R-L+1)

感觉自己写的好啰嗦,直接上代码加注释;

  1. 1 #include<stdio.h>
  2. 2 #include<algorithm>
  3. 3 #include<string.h>
  4. 4 #define ll long long
  5. 5 using namespace std;
  6. 6
  7. 7 ll q[100100]={0},p[100100]={0},pos[100100]={0};
  8. 8 int main()
  9. 9 {
  10. 10 int n;
  11. 11 scanf("%d",&n);
  12. 12 for(int i=0;i<n;i++){
  13. 13 scanf("%lld",&q[i]);
  14. 14 }
  15. 15 sort(q,q+n);
  16. 16 for(int i=0;i<n-1;i++){
  17. 17 p[i]=q[i+1]-q[i]; //求出数组里i和i-1的差值存起来
  18. 18 }
  19. 19 sort(p,p+n-1);
  20. 20 for(int i=0;i<n;i++){
  21. 21 pos[i+1]=pos[i]+p[i]; //求差值的前缀和
  22. 22 }
  23. 23 ll m,a,b;
  24. 24 scanf("%lld",&m);
  25. 25 while(m--){
  26. 26 scanf("%lld%lld",&a,&b);
  27. 27 ll s=b-a+1;
  28. 28 ll sum=s+q[n-1]-q[0]; //没加时的最小值到加了的最大值之间的个数
  29. 29 ll mid=upper_bound(p,p+n-1,s)-p; //lower_bound 和 upper_bound 都可emmmmmm...不知道为啥(毕竟我菜)
  30. 30 sum=sum-(pos[n-1]-pos[mid])+(n-1-mid)*s; //lower返回大于或等于s的第一个值的下标 upper 大于
  31. 31
  32. 32 //(pos[n-1]-pos[mid])后边差值大于s的差值和
  33. 33 //(n-1-mid)*s后边差值大于s的加上了s (前边小于或等于s的直接加差值)
  34. 34
  35. 35 printf("%lld\n",sum);
  36. 36 }
  37. 37 return 0;
  38. 38 }

CodeForces 1119D(差分+前缀和+二分)的更多相关文章

  1. Codeforces Global Round 2 D 差分 + 前缀和 + 二分

    https://codeforces.com/contest/1119/problem/D 题意 有n个数组,每个数组大小为\(10^{18}+1\)且为等差数列,给出n个数组的\(s[i]\),q次 ...

  2. Codeforces 1119D(差分)

    题面 传送门 分析 先考虑\(O(nk)\)的做法,先按s从小到大排序,每个串的数显然形成了n个连续区间\([s_i+l,s_i+r]\),且这些区间的左端点升序排列,然后把区间合并就可以知道有多少个 ...

  3. CodeForces - 948C(前缀和 + 二分)

    链接:CodeForces - 948C 题意:N天,每天生产一堆雪体积 V[i] ,每天每堆雪融化 T[i],问每天融化了多少雪. 题解:对 T 求前缀和,求每一堆雪能熬过多少天,再记录一下多余的就 ...

  4. Educational Codeforces Round 61 C 枚举 + 差分前缀和

    https://codeforces.com/contest/1132/problem/C 枚举 + 差分前缀和 题意 有一段[1,n]的线段,有q个区间,选择其中q-2个区间,使得覆盖线段上的点最多 ...

  5. Codeforces 975 前缀和二分算存活人数 思维离直线速度相同判平行

    A /* Huyyt */ #include <bits/stdc++.h> using namespace std; typedef long long ll; ]; ]; map< ...

  6. Codeforces 948 数论推导 融雪前缀和二分check 01字典树带删除

    A. 全部空的放狗 B. 先O(NLOGNLOGN)处理出一个合数质因数中最大的质数是多少 因为p1 x1 x2的关系是 x2是p在x1之上的最小倍数 所以x1的范围是[x2-p+1,x2-1]要使最 ...

  7. HRBUST 1909——理工门外的树——————【离线处理,差分前缀和】

    理工门外的树 Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %lld , %llu Java class n ...

  8. HDU 5419——Victor and Toys——————【线段树|差分前缀和】

    Victor and Toys Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/131072 K (Java/Others ...

  9. HDU 5452——Minimum Cut——————【树链剖分+差分前缀和】ACdream 1429——Diversion——————【树链剖分】

    Minimum Cut Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 65535/102400 K (Java/Others)Tota ...

随机推荐

  1. 科来网络通讯协议图2019版(OSI七层模型)

    来源:http://www.colasoft.com.cn/download/protocols_map.php 自己把它转成了图片,好做查看:https://www.lanzous.com/ib5h ...

  2. Centos 6.5 Rabbitmq 安装和集群,镜像部署

    centos 6.5 rabbitmq 安装和集群,镜像部署 安装erlang: yum install gcc glibc-devel make ncurses-devel openssl-deve ...

  3. Python+Docker+Flask+pyecharts实现数据可视化

    1.数据加工pyecharts图实现: 数据源:本地CSV文件 ps:由于是跟生产环境做交互,生产环境指标由HSQL加工,使用存储过程挂后台定时运行,后使用python实现导出及定时分发,本地pyth ...

  4. o_direct刷新方式和文件系统支持Direct i/o

    若让innodb使用o_direct刷新方式,文件系统支持Direct i/o 是非常重要的.为啥

  5. element el-table表格的vue组件二次封装(附表格高度自适应)

    基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...

  6. 【Linux】ssh远程连接到指定ip的指定用户上

    通过ssh可以远程连接到其他的机器上,但是如果只想连接到指定的用户的话 需要这样做: -l 选项 (是L不是I,小写) ssh IP -l 用户名 这里的ip如果在hosts下就可以直接输入域名或者主 ...

  7. kubernetes机理之调度器以及控制器

    一 了解调度器 1.1  调度器是如何将一个pod调度到节点上的 我们都已然知晓了,API服务器不会主动的去创建pod,只是拉起系统组件,这些组件订阅资源状态的通知,之后创建相应的资源,而负责调度po ...

  8. ctfhub技能树—web前置技能—http协议—基础认证

    打开靶机环境 下载附件后发现是常用密码字典,于是考虑本题可能是考察密码爆破 打开环境 发现需要认证,于是考虑使用暴力破解 使用burpsuite抓包,查看 发现最下面一行有加密后的密文 使用base6 ...

  9. 将汉字取模软件中的汉字放到keil5中显示

    最近因为要使用STM32做毕业设计,需要用LCD显示中文,STM32开发板用的是原子的战舰STM32开发板,给的LCD显示例程里貌似没有中文显示,那么需要自己去编写中文显示程序. 软件编写对我来说并不 ...

  10. GStreamer环境搭建篇

    GStreamer是一套强大的多媒体中间件系统,跟FFmpeg功能类似. 各个Linux发行版(Ubuntu,fedora),大都集成了GStreamer相关工具,而作为软件层次结构最上层的播放器,几 ...