HDU 4288
来源:互联网 发布:mac恢复删除文件 编辑:程序博客网 时间:2024/06/10 10:46
线段树
每个区间记录该区间内sum[0...4],在区间合并用时注意右区间需要用上左区间的所含元素个数。
#include<cstdio>#include<algorithm>#include<cstring>#define N 100100typedef long long ll;using namespace std;struct Point{ int l,r; int num;//number in the interval ll sum[5];//sum of the asked number in the interval}tree[N*3];int sel[N],pn[N],px[N];void build(int s,int t,int id){ tree[id].l=s,tree[id].r=t,tree[id].num=0; for(int i=0;i<5;i++)tree[id].sum[i]=0; if(s!=t){ int mid=(s+t)>>1; build(s,mid,id<<1); build(mid+1,t,id<<1|1); }}void insert(int pos,int number,int inc,int id){ int i; if(tree[id].l==tree[id].r){ tree[id].num+=inc; tree[id].sum[1]+=number; return ; } int mid=(tree[id].l+tree[id].r)>>1; if(pos<=mid)insert(pos,number,inc,id<<1); else if(pos>mid)insert(pos,number,inc,id<<1|1); tree[id].num=tree[id<<1].num+tree[id<<1|1].num; for(i=0;i<5;i++) tree[id].sum[i]=tree[id<<1].sum[i]+tree[id<<1|1].sum[(i-tree[id<<1].num+1000000)%5];}int main(){ char s[10]; int i,k,tem,pos,n; while(scanf("%d",&n)!=EOF){ k=0; for(i=1;i<=n;i++){ scanf("%s",s); if(s[0]=='a'){ sel[i]=1; scanf("%d",&tem); pn[i]=px[k++]=tem; } else if(s[0]=='d'){ sel[i]=2; scanf("%d",&tem); pn[i]=tem; } else sel[i]=3; } sort(px,px+k); int nn=unique(px,px+k)-px; if(nn!=0) build(1,nn,1); for(i=1;i<=n;i++){ if(sel[i]==1){ pos=lower_bound(px,px+nn,pn[i])-px+1; insert(pos,pn[i],1,1); } else if(sel[i]==2){ pos=lower_bound(px,px+nn,pn[i])-px+1; insert(pos,-pn[i],-1,1); } else{ if(nn==0) printf("0\n"); else printf("%I64d\n",tree[1].sum[3]); } } }}
- HDU 4288
- hdu 4288
- HDU 4288
- HDU 4288
- HDU-4288
- hdu 4288 Coder
- HDU 4288 Coder
- HDU 4288线段树
- hdu 4288 Coder
- HDU 4288 Coder
- hdu 4288 Coder
- HDU 4288 Coder
- HDU 4288 Coder
- HDU 4288 Coder
- hdu 4288 Coder
- hdu 4288 线段树
- hdu 4288 Coder
- hdu 4288 Coder
- vimrc备用
- 散热器问题一则
- 并查集
- C++上机报告 输入英文找出元音字母的个数(文章结束用$表示)
- HDU 3082 水
- HDU 4288
- 将java工程文件打成jar包并且保留每个java文件的方法注释方法
- 集合框架(一)——概述
- 如何限制同一客户端登录的用户数量以及禁止同一用户同时在不同客户端登录? (转)
- 防止出现乱码,J2EE项目统一使用UTF-8编码设置方法(转)
- 成都网络赛 hdu 4288 4291 4296
- c++ ofstream与isstream用法
- java文件输入输出流
- UIView的autoresizingMask的详细研究