hdu 1166 敌兵布阵
来源:互联网 发布:wifi显示不安全网络 编辑:程序博客网 时间:2024/06/05 08:20
/*
基础线段树
*/
#include <stdio.h>#include <string.h>int n,m,f[100001];struct node{int l,r; int sum;}e[100000*4];void build(int a,int b,int c){if(a==b) {e[c].l=e[c].r=a;e[c].sum=f[a];return; }e[c].l=a;e[c].r=b;int mid=(a+b)/2;build(a,mid,2*c);build(mid+1,b,2*c+1);e[c].sum=e[2*c].sum+e[2*c+1].sum;}void add(int a,int c,int val){if(e[c].l==a&&e[c].r==a) {e[c].sum+=val;return; }e[c].sum+=val;int mid=(e[c].l+e[c].r)/2;if(a>mid)add(a,2*c+1,val);elseadd(a,2*c,val);}int query(int a,int b,int c){if(e[c].l==a&&e[c].r==b)return e[c].sum;int mid=(e[c].l+e[c].r)/2;if(a>mid)return query(a,b,2*c+1);else if(b<=mid)return query(a,b,2*c);elsereturn query(a,mid,2*c)+query(mid+1,b,2*c+1);}int main(){ int T,tt=0; scanf("%d",&T);while(T--) { tt++; scanf("%d",&n);int i,j,k;for(i=1;i<=n;i++)scanf("%d",&f[i]);build(1,n,1);char ch[10];int x,y,z;printf("Case %d:\n",tt);while(scanf("%s",ch)&&strcmp("End",ch)!=0) {if(strcmp(ch,"Query")==0) {scanf("%d %d",&x,&y);printf("%d\n",query(x,y,1)); }else { int flag=1; if(strcmp("Sub",ch)==0) flag=-1;scanf("%d%d",&x,&y);add(x,1,flag*y); } } }return 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 敌兵布阵
- arp_ignore背后的rp_filter与arp_filter
- vs2010 快捷键设置问题 alt+ F8
- ruby 版本的切换
- 在指定目录中查找指定类型的文件,并且获取文件名再显示
- 国内电子商务外包的发展前景如何?
- hdu 1166 敌兵布阵
- java内部类
- 日历项目里面自定义日历
- 2012网络流行语 - 收集
- I NEED A OFFER!
- 在线学习新编程 技巧全攻略
- 在页面上画线段
- Servlet Filter(过滤器)
- Android Fragment使用详解