2012 ACM/ICPC Asia Regional Changchun Online-1001
来源:互联网 发布:js设置元素样式 编辑:程序博客网 时间:2024/04/30 13:38
//一个线段树题,把k=1这种情况进行扩展,扩展到10就可以了;
代码如下:
#include<stdio.h>#include<string.h>struct node{ int d[11];}sum[210000];void build(int i,int l,int r){ int j,mid; for(j=1;j<=10;j++) sum[i].d[j]=0; if(l==r)return; else { mid=(l+r)>>1; build(i<<1,l,mid); build(i<<1|1,mid+1,r); }}void update(int i,int l,int r,int a,int b,int c,int k){ int mid,s,t; if(a>b)return; if(l==a&&b==r) sum[i].d[k]+=c; else { mid=(l+r)>>1; if(b<=mid) update(i<<1,l,mid,a,b,c,k); else if(b>mid&&a<=mid) { update(i<<1,l,mid,a,mid,c,k); s=mid+1; t=(s-a)%k; if(t!=0)s+=k-t; if(s<=b) update(i<<1|1,mid+1,r,s,b,c,k); } else update(i<<1|1,mid+1,r,a,b,c,k); }}int query(int i,int l,int r,int p,int k){ int mid,ans=0; if(l==r) return sum[i].d[k]; else { mid=(l+r)>>1; if((p-l)%k==0) ans=sum[i].d[k]; if(p<=mid) return ans+query(i<<1,l,mid,p,k); else return ans+query(i<<1|1,mid+1,r,p,k); }}int num[60000];int main(){ int n,m,i,op,a,b,c,k,j; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) scanf("%d",&num[i]); scanf("%d",&m); build(1,1,n); while(m--) { scanf("%d",&op); if(op==1) { scanf("%d%d%d%d",&a,&b,&k,&c); update(1,1,n,a,b,c,k); } else { scanf("%d",&a);b=0; for(j=1;j<=10;j++) b+=query(1,1,n,a,j); printf("%d\n",b+num[a]); } } } return 0;}
- 2012 ACM/ICPC Asia Regional Changchun Online
- 2012 ACM/ICPC Asia Regional Changchun Online-1001
- 2013 ACM/ICPC Asia Regional Changchun Online
- 2013 ACM/ICPC Asia Regional Changchun Online
- 2013 ACM/ICPC Asia Regional Changchun Online
- 2015 ACM/ICPC Asia Regional Changchun Online
- 2015 ACM/ICPC Asia Regional Changchun Online
- 2015 ACM/ICPC Asia Regional Changchun Online(1001)
- 2012 ACM/ICPC Asia Regional Changchun Online-1010
- 2012 ACM/ICPC Asia Regional Changchun Online-1006
- 2012 ACM/ICPC Asia Regional Changchun Online 解题报告
- 2012 ACM/ICPC Asia Regional Changchun Online-1002
- 2012 ACM/ICPC Asia Regional Changchun Online-1011(hdu4277)
- 2012 ACM/ICPC Asia Regional Changchun Online [赛后解题报告]
- 2012 ACM/ICPC Asia Regional Changchun Online-LianLianKan
- HDU4273 Rescue(2012 ACM/ICPC Asia Regional Changchun Online)
- 2013 ACM/ICPC Asia Regional Changchun Online Stone
- 2013 ACM/ICPC Asia Regional Changchun Online hdu Theme Section
- 一些oracle关键词应用整理
- ACM几何算法题目推荐
- 标准linux休眠和唤醒机制分析
- Javascript学习第一季(7)
- 关于Mysql的mysql.sock文件
- 2012 ACM/ICPC Asia Regional Changchun Online-1001
- 2012 ACM/ICPC Asia Regional Changchun Online-1010
- 2. Getting Started——Introduction to Algorithms Third Edition
- 变电站接线图举例
- 学习使用SQLite(版本3.7.4)(中H ) ?
- 遍历树 栈的泛型实现 db操作 读写文件 代码
- Mac下 svn常用命令
- 2012 ACM/ICPC Asia Regional Changchun Online-1006
- java 代码片段_6