HDU 4027
来源:互联网 发布:php读取文件内容 编辑:程序博客网 时间:2024/06/09 21:11
/*Can you answer these queries?*/#include<cstdio>#include<cmath>#include<cstring>#include<vector>#include<algorithm>using namespace std;typedef long long LL;#define lson (pos<<1)#define rson (pos<<1|1)const int maxn = 100005;LL sum[maxn << 2];bool vis[maxn << 2];void pushup(int pos){ sum[pos] = sum[lson] + sum[rson]; if(vis[lson] && vis[rson]) vis[pos] = true;}void build(int l,int r,int pos){ vis[pos] = false; if(l == r){ scanf("%I64d",&sum[pos]); if(sum[pos] <= 1) vis[pos] = true; return; } int mid = (l + r) >> 1; build(l,mid,lson); build(mid + 1,r,rson); pushup(pos);}void update(int L,int R,int l,int r,int pos){ if(L == R){ sum[pos] = sqrt(sum[pos]); if(sum[pos] <= 1) vis[pos] = true; return; } int mid = (L + R) >> 1; if(l <= mid && !vis[lson]) update(L,mid,l,r,lson); if(r > mid && !vis[rson]) update(mid + 1,R,l,r,rson); pushup(pos);}LL query(int L,int R,int l,int r,int pos){ if(l <= L && R <= r) return sum[pos]; LL ans = 0; int mid = (L + R) >> 1; if(l <= mid) ans += query(L,mid,l,r,lson); if(r > mid) ans += query(mid + 1,R,l,r,rson); return ans;}int main(){ int n,m,Case = 1; while(scanf("%d",&n) != EOF){ build(1,n,1); scanf("%d",&m); LL ans; printf("Case #%d:\n",Case++); for(int i = 0;i < m; i++){ int op,x,y; scanf("%d%d%d",&op,&x,&y); if(x > y) swap(x,y); if(op == 0) update(1,n,x,y,1); else printf("%I64d\n",query(1,n,x,y,1)); } puts(""); } return 0;}
0 0
- HDU 4027
- hdu 4027
- hdu 4027
- HDU 4027
- hdu 4027
- HDU 4027
- HDU 4027
- HDU 4027
- hdu 4027
- [HDU] 4027
- HDU 4027 线段树
- hdu 4027#线段树
- hdu 4027 线段树
- HDU 4027 线段树
- hdu 4027 线段树
- hdu 4027(区间更新)
- HDU 4027 线段树
- hdu
- Button会抢夺ListView的焦点
- Markdown学习(三)
- sublime操作快捷键
- openstack_项目与用户的管理
- Java IO
- HDU 4027
- java自定义annotation
- Linux中的地址空间(一)
- oracle对like的程序优化
- 华为oj之字典排序
- xcode部分支持arc
- Entity Framework 质量博客链接
- 需要的拿去—Android手表和手机通讯研究
- java学习笔记之StringBuffer(一)