CodeForces 1119D(差分+前缀和+二分)
题意:给你一个数组,数组每次每个数都+1,有q次查询每一查询+L到+R中出现的所有不重复的数字个数。
+L到+R其实就相当于是0到+(R-L+1)
感觉自己写的好啰嗦,直接上代码加注释;
1 #include<stdio.h>
2 #include<algorithm>
3 #include<string.h>
4 #define ll long long
5 using namespace std;
6
7 ll q[100100]={0},p[100100]={0},pos[100100]={0};
8 int main()
9 {
10 int n;
11 scanf("%d",&n);
12 for(int i=0;i<n;i++){
13 scanf("%lld",&q[i]);
14 }
15 sort(q,q+n);
16 for(int i=0;i<n-1;i++){
17 p[i]=q[i+1]-q[i]; //求出数组里i和i-1的差值存起来
18 }
19 sort(p,p+n-1);
20 for(int i=0;i<n;i++){
21 pos[i+1]=pos[i]+p[i]; //求差值的前缀和
22 }
23 ll m,a,b;
24 scanf("%lld",&m);
25 while(m--){
26 scanf("%lld%lld",&a,&b);
27 ll s=b-a+1;
28 ll sum=s+q[n-1]-q[0]; //没加时的最小值到加了的最大值之间的个数
29 ll mid=upper_bound(p,p+n-1,s)-p; //lower_bound 和 upper_bound 都可emmmmmm...不知道为啥(毕竟我菜)
30 sum=sum-(pos[n-1]-pos[mid])+(n-1-mid)*s; //lower返回大于或等于s的第一个值的下标 upper 大于
31
32 //(pos[n-1]-pos[mid])后边差值大于s的差值和
33 //(n-1-mid)*s后边差值大于s的加上了s (前边小于或等于s的直接加差值)
34
35 printf("%lld\n",sum);
36 }
37 return 0;
38 }
CodeForces 1119D(差分+前缀和+二分)的更多相关文章
- Codeforces Global Round 2 D 差分 + 前缀和 + 二分
https://codeforces.com/contest/1119/problem/D 题意 有n个数组,每个数组大小为\(10^{18}+1\)且为等差数列,给出n个数组的\(s[i]\),q次 ...
- Codeforces 1119D(差分)
题面 传送门 分析 先考虑\(O(nk)\)的做法,先按s从小到大排序,每个串的数显然形成了n个连续区间\([s_i+l,s_i+r]\),且这些区间的左端点升序排列,然后把区间合并就可以知道有多少个 ...
- CodeForces - 948C(前缀和 + 二分)
链接:CodeForces - 948C 题意:N天,每天生产一堆雪体积 V[i] ,每天每堆雪融化 T[i],问每天融化了多少雪. 题解:对 T 求前缀和,求每一堆雪能熬过多少天,再记录一下多余的就 ...
- Educational Codeforces Round 61 C 枚举 + 差分前缀和
https://codeforces.com/contest/1132/problem/C 枚举 + 差分前缀和 题意 有一段[1,n]的线段,有q个区间,选择其中q-2个区间,使得覆盖线段上的点最多 ...
- Codeforces 975 前缀和二分算存活人数 思维离直线速度相同判平行
A /* Huyyt */ #include <bits/stdc++.h> using namespace std; typedef long long ll; ]; ]; map< ...
- Codeforces 948 数论推导 融雪前缀和二分check 01字典树带删除
A. 全部空的放狗 B. 先O(NLOGNLOGN)处理出一个合数质因数中最大的质数是多少 因为p1 x1 x2的关系是 x2是p在x1之上的最小倍数 所以x1的范围是[x2-p+1,x2-1]要使最 ...
- HRBUST 1909——理工门外的树——————【离线处理,差分前缀和】
理工门外的树 Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %lld , %llu Java class n ...
- HDU 5419——Victor and Toys——————【线段树|差分前缀和】
Victor and Toys Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others ...
- HDU 5452——Minimum Cut——————【树链剖分+差分前缀和】ACdream 1429——Diversion——————【树链剖分】
Minimum Cut Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Tota ...
随机推荐
- LeetCode707 设计链表
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- 【Linux】zabbix4.0服务器搭建,agent搭建,及邮件使用方法
zabbix默认的 服务端监听端口为10051,而被监控端即Zabbix--agents代理程序监控10050端口. 更新yum源: yum clean all yum makecache 需要配置网 ...
- 【Linux】大于2T的磁盘怎么分区?
环境CentOS7.1 2.9t磁盘 fdisk 只能分区小于2t的磁盘,大于2t的话,就要用到parted 1,将磁盘上原有的分区删除掉: 进入:#parted /dev/sdb 查看:(par ...
- ctfhub技能树—信息泄露—备份文件下载—bak文件
打开靶机 查看页面信息 继续使用dirsearch进行扫描 python3 dirsearch.py -u http://challenge-d4234042e1d43e96.sandbox.ctfh ...
- centos7安装vsftpd最大的坑
1.检查用户和密码没有错误2.vsftpd.conf配置没有错误3.检查/etc/vsftpd/vsftpd.conf 里面pam_service_name =vsftpd4.终极boss查看vim ...
- linux下安装nacos
一.安装 1.下载安装包: https://github.com/alibaba/nacos/releases 2.解压 : tar -xzvf nacos-server-1.2.1.tar.gz 3 ...
- 2.4V升5V芯片,8uA功耗,低功耗升压电路图
2.4V升5V,可用于USB拔插充电,也可以用于把两节镍氢电池2.4V升压到5V,的固定输出稳压电压值,同时输出电流可达1A,0.5A等 首先是先说下0.5A的这款的话,是比较低功耗的,8uA左右的输 ...
- JS复习笔记一:冒泡排序和二叉树列
在这里逐步整理一些JS开发的知识,分享给大家: 一:冒泡排序 使用场景:数组中根据某个值得大小来对这个数组进行整体排序 难度:简单 原理:先进行循环,循环获取第一至倒数第二的范围内所有值,对当前值与下 ...
- A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-number-cipher
A1Z26 Cipher - Letter Number A=1 B=2 C=3 - Online Decoder, Translator https://www.dcode.fr/letter-nu ...
- 排查golang的性能问题 go pprof 实践
小结: 1.内存消耗分析 list peek 定位到函数 https://mp.weixin.qq.com/s/_LovnIqJYAuDpTm2QmUgrA 使用pprof和go-torch排查 ...