ACM2012长春赛区网络赛——1001
来源:互联网 发布:北森生涯怎么样知乎 编辑:程序博客网 时间:2024/05/16 09:00
因为加的数间隔一定,那么他们对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;}
- ACM2012长春赛区网络赛——1001
- ACM2012长春赛区网络赛——1002
- ACM2012长春赛区网络赛——1006
- ACM2012长春赛区网络赛——1008
- ACM2012长春赛区网络赛——1010
- ACM2012长春赛区网络赛——1011
- 2012长春赛区网络赛总结
- 2012 ACM/ICPC 长春赛区网络赛
- 网络赛长春赛区1004 数论,概率
- 2013年ACM网络赛长春赛区
- Hdu5441 2015长春赛区网络赛
- 长春赛区2012 A Simple Problem with Integers 1001题 (网络赛)
- 长春赛区2012 Alice and Bob 1002题 (网络赛)
- 长春赛区2012 USACO ORZ 1011题 (网络赛)
- HDU4268 2012ACM长春赛区网络赛 Alice and Bob
- 2013icpc网络赛长春赛区J题(Flyer)
- hdu-5442(后缀数组,2015网络赛长春赛区)
- 2015年ACM长春赛区网络赛G题
- Oh Yeah!! 初步破解了模型的骨骼蒙皮---------
- Bonjour tutorial-networking-and-bonjour-on-iphone ios 局域网传输协议
- ARM学习记录(1)
- 求任意数以内所有可以表示为连续素数之和的素数。
- EditText的背景颜色的设置及android.graphics.Color的使用
- ACM2012长春赛区网络赛——1001
- HDU 4276--The Ghost Blows Light
- Android中使用HTTP服务
- 浅谈C语言的数据存储(一)
- myeclipse安装svn插件的多种方式
- Android 应用开发笔记 - 应用程序设计基础
- ACM2012长春赛区网络赛——1002
- 求1亿内素数个数的C++程序 详细解释
- Activity属性设置大全