hdu 1166 敌兵布阵
来源:互联网 发布:淘宝首页轮播图片尺寸 编辑:程序博客网 时间:2024/06/13 21:30
线段树,怎么说呢,牺牲更新的时间来优化查找的时间~
#include<iostream>#define maxn 50000#define ll long longusing namespace std;struct stu{int r,l;ll sum;};stu root[maxn*4];int n,a,b;void build(int left,int right,int x){root[x].l=left;root[x].r=right;if(left==right){cin>>root[x].sum;return;}int mid=(left+right)/2;build(left,mid,x*2);build(mid+1,right,x*2+1);root[x].sum=root[x*2].sum+root[x*2+1].sum;}ll que(int l,int r,int x){if(r==root[x].r&&l==root[x].l) return root[x].sum;if(r<=(root[x].l+root[x].r)/2) return que(l,r,x*2);if(l>=(root[x].l+root[x].r)/2+1) return que(l,r,x*2+1);else return que(l,(root[x].l+root[x].r)/2,x*2)+que((root[x].l+root[x].r)/2+1,r,x*2+1);}void upd(int x,int i,int ch){if(i>=root[x].l&&i<=root[x].r){root[x].sum+=ch;if(root[x].l==root[x].r) return;upd(x*2,i,ch);upd(x*2+1,i,ch);}}int main(){cin.sync_with_stdio(false);int t;cin>>t;int casee=1;while(t--){cin>>n;build(1,n,1);cout<<"Case "<<casee++<<":"<<endl;string cmd;while(cin>>cmd){if(cmd[0]=='E') break;if(cmd[0]=='Q'){cin>>a>>b;cout<<que(a,b,1)<<endl;}else if(cmd[0]=='A'){cin>>a>>b;upd(1,a,b);}else{cin>>a>>b;upd(1,a,-b);}}}return 0; }
0 0
- HDU 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- HDU 1166 敌兵布阵
- HDU 1166 - 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- hdu 1166 敌兵布阵
- 20150803 YAHOO军规:如何提高网站速度
- Delphi二维码中文支持、分组、批量打印经验小结
- jQuery选择器总结
- Serv-U FTP Server应用技巧及安全防范
- 将InputStream(输入流)转成String 的方法
- hdu 1166 敌兵布阵
- ZOJ_3195_Design the city(LCA+tarjan)
- java线程之线程中断的用处
- 学习指针型函数和指向函数的指针
- 前五天知识点总结
- 升级win10,提示(RAM)内存不足2G的解决办法,亲测可行
- 微信公众平台开发:进阶篇(Web App开发入门)
- spring 事务传播属性
- SQL中Where与Having的区别 .