poj3468
来源:互联网 发布:老炮儿网络剧剧情简介 编辑:程序博客网 时间:2024/05/29 07:09
总结了几个调了一天才发现的bug: 1.数据类型不对应(int ,long long)(包括输入输出格式类型不对应)
2.左移运算符而和算术运算符的优先级没考虑 3.输入字符和字符串的区别!!!
#include<iostream>#include<stdio.h>#include<cstring>using namespace std;#define N 100005long long a[N];long long add[N<<2];struct node{ int l,r; long long sum;//记录区间的和}tree[N<<2];void Pushdown(int rt,int m)//m为区间长度{ if(add[rt]) { add[rt*2]+=add[rt]; add[rt*2+1]+=add[rt]; tree[rt*2].sum+=add[rt]*(m-(m>>1)); tree[rt*2+1].sum+=add[rt]*(m>>1); add[rt]=0;//更新lazy标记 }}void build(int p,int l,int r){ tree[p].l=l;tree[p].r=r; add[p]=0; if(l==r){ tree[p].sum=a[l]; return;} int mid=(l+r)/2; build(p<<1,l,mid); build(p<<1|1,mid+1,r); tree[p].sum=tree[p<<1].sum+tree[p<<1|1].sum;}void Update(int x,int y,int p,int c){ if(x==tree[p].l&&tree[p].r==y) { add[p]+=c; tree[p].sum+=(long long)c*(tree[p].r-tree[p].l+1); return; } Pushdown(p,tree[p].r-tree[p].l+1);//若已标记的区间部分被更改,只更新下一层 int mid=(tree[p].l+tree[p].r)/2; if(y<=mid) Update(x,y,p*2,c); else if(x>mid) Update(x,y,p*2+1,c); else { Update(x,mid,p*2,c); Update(mid+1,y,p*2+1,c); } tree[p].sum=tree[p*2].sum+tree[p*2+1].sum;}long long Query(int p,int x,int y)//找区间[x,y]的和{ if(x==tree[p].l&&tree[p].r==y) return tree[p].sum; Pushdown(p,tree[p].r-tree[p].l+1); int mid=(tree[p].l+tree[p].r)/2; if(y<=mid) return Query(p*2,x,y); else if(x>mid) return Query(p*2+1,x,y); return (Query(p*2,x,mid)+Query(p*2+1,mid+1,y));}int main(){ int n,m,j,e,f,g; char ch[2]; scanf("%d%d",&n,&m); for(j=1;j<=n;j++) scanf("%I64d",&a[j]); build(1,1,n); for(int i=1;i<=m;i++) { scanf("%s",ch); if(ch[0]=='Q') { scanf("%d%d",&e,&f); printf("%I64d\n",Query(1,e,f)); } if(ch[0]=='C') { scanf("%d%d%d",&e,&f,&g); Update(e,f,1,g); } } return 0;}
0 0
- POJ3468
- POJ3468
- poj3468
- poj3468
- poj3468
- poj3468
- poj3468
- POJ3468
- poj3468
- POJ3468
- poj3468
- poj3468
- poj3468
- poj3468
- poj3468
- POJ3468
- poj3468
- poj3468
- VKDebugConsole App黑盒控制台
- 开发小技巧
- spring framework release下载
- maven几个问题总结
- session是什么
- poj3468
- 232. Implement Queue using Stacks
- iOS block 源码详解2
- Interview
- DataInputStream/DataOutputStream
- 欢迎使用CSDN-markdown编辑器
- IDEA快捷键整理
- UINIX 网络编程第一个获取服务器测试程序
- css里的.className div {}