ACM2012长春赛区网络赛——1001
2012-09-09 00:09
267 查看
因为加的数间隔一定,那么他们对k取余余数一定相等,所以假设每次更新的点为kx+b,由于改变范围可以确定x的范围,还有b的值那么更新[k][b]这棵线段树即可,对于每一次查询q,可以唯一写作q=kx+b(1<=k<=10,b<k)的形式,对于每个相应形式在对应线段树里查询改变量加起来再加上原来的值即可
#include <cstdio> #include <cstring> struct point { int now,add; }f[11][11][200100]; int n,a[50010],i,j,k,q,b,c,d,e,x; long long ans; void ini(int k,int b,int pos,int begin,int end) { f[k][b][pos].add=0; f[k][b][pos].now=0; if(begin!=end) { int mid=(begin+end)>>1; ini(k,b,pos<<1,begin,mid); ini(k,b,(pos<<1)|1,mid+1,end); } } void down(int k,int b,int pos) { f[k][b][pos<<1].add+=f[k][b][pos].add; f[k][b][pos<<1].now+=f[k][b][pos].add; f[k][b][(pos<<1)|1].add+=f[k][b][pos].add; f[k][b][(pos<<1)|1].now+=f[k][b][pos].add; f[k][b][pos].add=0; } void add(int k,int b,int pos,int begin,int end,int l,int r,int c) { if(l<=begin && end<=r) { f[k][b][pos].add+=c; f[k][b][pos].now+=c; return; } if(f[k][b][pos].add)down(k,b,pos); int mid=(begin+end)>>1; if(l<=mid)add(k,b,pos<<1,begin,mid,l,r,c); if(r>mid)add(k,b,(pos<<1)|1,mid+1,end,l,r,c); } int back(int k,int b,int pos,int begin,int end,int x) { if(begin==end)return f[k][b][pos].now; if(f[k][b][pos].add)down(k,b,pos); int mid=(begin+end)>>1; if(x<=mid)return back(k,b,pos<<1,begin,mid,x); else return back(k,b,(pos<<1)|1,mid+1,end,x); } int main() { while(scanf("%d",&n)==1) { for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<11;i++) for(j=0;j<i;j++) ini(i,j,1,0,n/i); scanf("%d",&q); while(q--) { scanf("%d",&x); if(x==1) { scanf("%d%d%d%d",&b,&c,&d,&e); while((c-b)%d)c--; add(d,b%d,1,0,n/d,b/d,c/d,e); } else { scanf("%d",&b); ans=(long long)a[b]; for(i=1;i<=10;i++) ans+=back(i,b%i,1,0,n/i,b/i); printf("%I64d\n",ans); } } } return 0; }
相关文章推荐
- 长春赛区2012 A Simple Problem with Integers 1001题 (网络赛)
- ACM2012长春赛区网络赛——1002
- HDU 4267 A Simple Problem with Integers 第37届ACM/ICPC长春赛区网络赛1001题 (树状数组)
- ACM2012长春赛区网络赛——1006
- ACM2012长春赛区网络赛——1008
- ACM2012长春赛区网络赛——1010
- ACM2012长春赛区网络赛——1011
- 2015 亚洲区域赛长春赛区网络赛解题报告(9/13)
- HDU 5447 Good Numbers (2015年长春赛区网络赛K题)
- HDU 4277 USACO ORZ 第37届ACM/ICPC长春赛区网络赛1011题(搜索)
- 2012 ACM/ICPC 长春赛区网络赛
- 长春赛区2012 USACO ORZ 1011题 (网络赛)
- 网络赛长春赛区1004 数论,概率
- 2016ICPC青岛赛区网络赛 1001
- HDU 5438 Ponds (2015年长春赛区网络赛B题)
- hdu 4274 2012长春赛区网络赛 树形dp ***
- HDU 5442 Favorite Donut (2015年长春赛区网络赛F题)
- HDU 4268 Alice and Bob 第37届ACM/ICPC长春赛区网络赛1002题 (贪心+multiset)
- hdu 4277 2012长春赛区网络赛 dfs+hashmap ***
- 2015亚洲区域赛长春赛区网络预选赛