HDOJ 5213
2015-09-06 16:33
295 查看
[align=left]题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5213[/align]
BC 上的题,题解很清楚,会莫对的应该不难,
对于一个询问,我们拆成四个询问,开始拆成求区间矩形的样子,我想多了。
然后就是模板的莫队了。
一个变量打错,一直DEBUG
BC 上的题,题解很清楚,会莫对的应该不难,
对于一个询问,我们拆成四个询问,开始拆成求区间矩形的样子,我想多了。
然后就是模板的莫队了。
一个变量打错,一直DEBUG
#include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #include<string> #include<iostream> using namespace std; #define N 600055 typedef long long LL; int a ,pos ,block; int n,m,k,idx; int ans1 ,tmp ; struct node { int l,r,id; int p; }q ; //BZOJ 4129 int cmp(node a,node b) { if (pos[a.l]==pos[b.l]) return a.r<b.r; return pos[a.l]<pos[b.l]; } void solve() { int l=1,r=0; int ans=0; for (int i=1;i<=m;i++) { while (l>q[i].l) { l--; if (k-a[l]>0) ans+=tmp[k-a[l]]; tmp[a[l]]++; } while (r<q[i].r) { r++; if (k-a[r]>0) ans+=tmp[k-a[r]]; tmp[a[r]]++; } while (l<q[i].l) { if (k-a[l]>0) ans-=tmp[k-a[l]]; tmp[a[l]]--; l++; } while (r>q[i].r) { if (k-a[r]>0) ans-=tmp[k-a[r]]; tmp[a[r]]--; r--; } ans1[q[i].id]+=q[i].p*ans; } } int main() { while (scanf("%d%d",&n,&k)!=EOF) { memset(ans1,0,sizeof(ans1)); for (int i=1;i<=n;i++) scanf("%d",&a[i]); memset(tmp,0,sizeof(tmp)); block=sqrt(n); for (int i=1;i<=n;i++) pos[i]=(i-1)/block+1; idx=0; scanf("%d",&m); for (int i=1;i<=m;i++) { int l,r,l2,r2; scanf("%d%d%d%d",&l,&r,&l2,&r2); q[++idx].l=l;q[idx].r=r2;q[idx].id=i;q[idx].p=1; if (r+1<=l2-1) { q[++idx].l=r+1,q[idx].r=l2-1,q[idx].id=i,q[idx].p=1; } q[++idx].l=l;q[idx].r=l2-1;q[idx].id=i,q[idx].p=-1; q[++idx].l=r+1;q[idx].r=r2;q[idx].id=i,q[idx].p=-1; } swap(idx,m); sort(q+1,q+m+1,cmp); //for (int i=1;i<=m;i++) cout<<q[i].id<<" "; //cout<<endl; // cout<<m<<" "<<idx<<endl; solve(); for (int i=1;i<=idx;i++) printf("%d\n",ans1[i]); } return 0; }
相关文章推荐
- elastalert SpikeRule异常告警问题
- Xcode断点调试,po 报错
- javaScript系列:js中获取时间new Date()详细介绍
- 获取Android手机CPU类型 ARM、ARMV7、NEON
- IOS第三方代码收集
- @media css样式
- kqueue 实现文件操作监控
- 1094. The Largest Generation (25)
- STL之list的用法
- Copy + Paste (Clipboard) Issues / Not Working?
- CCF 201412-4 最优灌溉(MST)
- ROLLUP、CUBE、GROUP BY的使用区别
- 关于javascript跨域及JSONP的原理与应用
- 通过用 .NET 生成自定义窗体设计器来定制应用程序
- js实现鼠标点击左上角滑动菜单效果代码
- 三种排序方式
- jQuery横向擦除焦点图特效代码分享
- IMX6Solo启动流程 外传-新建一条Uboot命令
- 位图和矢量图区别,PS和AI的区别
- 三种排序方式