CQQ分治

Code

#include <cstdio>
#include <cstring>
#define N 50010 struct info{
int x,p,v;
info(int a,int b,int c):x(a),p(b),v(c){}
info(){x=p=v=0;}
friend bool operator < (info a,info b){
return a.p==b.p?a.x<b.x:a.p<b.p;
}
}que[N*3],tmp[N*3];
int n,qn,an,Ans[N]; inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
} inline void Init(){
qn=an=0;
memset(Ans,0,sizeof(Ans));
n=read();
for(int i=1,x;i<=n;++i) x=read(),que[qn++]=info(1,i,x);
char s[10];
for(;;){
scanf("%s",s);
if(s[0]=='E') break;
if(s[0]=='Q'){
int l=read(),r=read();
que[qn++]=info(2,l-1,an);
que[qn++]=info(3,r,an++);
}else{
int p=read(),v=read();
if(s[0]=='S') v=-v;
que[qn++]=info(1,p,v);
}
}
} void solve(int l,int r){
if(l+1>=r) return;
int m=(l+r)>>1;
solve(l,m),solve(m,r);
int p=l,q=m,cnt=0,sum=0;
while(p<m&&q<r){
if(que[p]<que[q]){
if(que[p].x==1) sum+=que[p].v;
tmp[cnt++]=que[p++];
}else{
if(que[q].x==2) Ans[que[q].v]-=sum;
else if(que[q].x==3) Ans[que[q].v]+=sum;
tmp[cnt++]=que[q++];
}
}
while(p<m) tmp[cnt++]=que[p++];
while(q<r){
if(que[q].x==2) Ans[que[q].v]-=sum;
else if(que[q].x==3) Ans[que[q].v]+=sum;
tmp[cnt++]=que[q++];
}
for(int i=0;i<cnt;++i) que[i+l]=tmp[i];
} int main(){
for(int T=read(),i=1;i<=T;++i){
Init();
solve(0,qn);
printf("Case %d:\n",i);
for(int i=0;i<an;++i) printf("%d\n",Ans[i]);
}
}

最新文章

  1. web报表工具FineReport常用函数的用法总结(报表函数)
  2. Spring 定时任务2
  3. get到的新技能
  4. ORACLE 10g 64位下载地址
  5. 调用gluNurbsCurve绘制圆弧
  6. POJ 2486 Apple Tree(树形DP)
  7. 对于服务器的识别的条件,header之类的使用
  8. springmvc的系统学习之配置方式
  9. XML DTD验证
  10. poj 3783 Balls 动态规划 100层楼投鸡蛋问题
  11. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf4
  12. 初识Android
  13. 【Android - 框架】之ORMLite的使用
  14. 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3
  15. AP付款出现(-1)例外处理
  16. 201521123037 《Java程序设计》第6周学习总结
  17. HTML语义化的理解
  18. E3Upload项目总结
  19. 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
  20. spring_07使用spring的特殊bean、完成分散配置

热门文章

  1. FTPUtil 多文件上传参考代码
  2. Struts2_总结
  3. Struts2_默认Action
  4. CentOS6.5安装Jenkins
  5. graphql 项目搭建(二)
  6. 323. Number of Connected Components in an Undirected Graph (leetcode)
  7. [转载]Memcached缓存服务的简单安装
  8. 引用类型(一):Object类型
  9. eclips新建Maven Web项目
  10. 解决 Jsp_Servlet 编码乱码问题