博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D. Frets On Fire 前缀和+二分
阅读量:6992 次
发布时间:2019-06-27

本文共 1978 字,大约阅读时间需要 6 分钟。

 

这个题真的难了我一天了,这种方法一开始没想出来,后来看了题解后明白了大致思路开始自己做但是!!!但是自己实现的时候老是一些细节出错!!!,调bug调了得有一个小时,蠢死了,这道题我一定要好好总结,总结为什么会卡壳,这要是比赛的签到题的话我得哭死!!!!!

 

#include
using namespace std;const int maxn=1e5+10;unsigned long long a[maxn];unsigned long long c[maxn];unsigned long long sum[maxn];set
s;int main(){ int n; cin>>n; for(int i=1; i<=n; i++) { unsigned long long t; cin>>t; s.insert(t); } int cnt=0; for(auto i:s) a[++cnt]=i; for(int i=1; i<=cnt-1; i++) c[i]=a[i+1]-a[i]; cnt--; sort(c+1,c+1+cnt); for(int i=1; i<=cnt; i++) sum[i]=sum[i-1]+c[i]; int q; cin>>q; while(q--) { unsigned long long l,r; cin>>l>>r; unsigned long long t=r-l; unsigned long long pos; unsigned long long ans=0; pos=upper_bound(c+1,c+1+cnt,t)-c; ans+=1+t; ans+=(sum[pos-1]); ans+=(cnt-pos+1)*(t+1); cout<
<

读题之后我的最直接的思路是把这n个数,去重排序,然后是比较两两之间的长度与r-l的区间长度的关系然后一直累加出答案。如下超时代码。

我应该要注意到这两两之间的差值也是可以排序的,排完序之后只要在小于等于r-l的区间长度的都是我下面if语句的第一条,大于r-l区间长度的都是else语句的内容,这个判断可以二分来实现,同时对于小于等于区间长度的可以用预先求出前缀和来快速计算。

 

#include
using namespace std;set
s;const int maxn=1e5+10;unsigned long long a[maxn];unsigned long long b[maxn];int main(){ int n; cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; int q; cin>>q; while(q--) { unsigned long long l,r; s.clear(); memset(b,0,sizeof(b)); cin>>l>>r; for(int i=1; i<=n; i++) s.insert(a[i]+l); unsigned long long t=r-l; int cnt=0; for(auto i:s) b[++cnt]=i; unsigned long long ans=0; for(int i=1; i<=cnt-1; i++) { if((b[i]+t)>=b[i+1]) ans+=b[i+1]-b[i]; else ans+=t+1; } ans+=t+1; printf("%lld\n",ans); }}

 

转载于:https://www.cnblogs.com/dongdong25800/p/10698109.html

你可能感兴趣的文章
Spring 4.0 中的 WebSocket 架构
查看>>
usaco1.4.3等差数列
查看>>
对于DQN的三大改进 - 这篇讲的好些
查看>>
Nutch中纠结我的classpath(转)
查看>>
setitimer()
查看>>
HTML5文件API
查看>>
Spring中 aop的 xml配置(简单示例)
查看>>
php面试专题---1、php中变量存储及引用的原理
查看>>
php class类的用法详细总结
查看>>
javascript对象如何使用
查看>>
js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)...
查看>>
logcat
查看>>
Android系统源代码
查看>>
PHP移动互联网开发笔记(1)——环境搭建及配置
查看>>
python学习-Django (1)
查看>>
Git 工作流程
查看>>
一切都很奇妙
查看>>
ionic项目中使用cordova插件支付宝支付
查看>>
VC 消息钩子 详细解释
查看>>
广搜记录路径
查看>>