HDU 4027 单点更新+“剪枝”
来源:互联网 发布:linux ant 配置 编辑:程序博客网 时间:2024/05/21 10:31
可以看出一个数开方大于等于7次时就一直为1了,利用这点剪枝
#include<cstdio>#include<cstring>#include<cmath>typedef long long ll;ll num[100010];struct Tree{ int l,r; ll sum;}tree[400000];void build(int s,int t,int id){ tree[id].l=s; tree[id].r=t; if(s==t){ tree[id].sum=num[s]; return ; } int mid=(tree[id].l+tree[id].r)>>1; build(s,mid,id<<1); build(mid+1,t,(id<<1)+1); tree[id].sum=tree[id<<1].sum+tree[(id<<1)+1].sum;}void update(int s,int t,int id){ if(tree[id].r-tree[id].l+1==tree[id].sum) /// return ; if(tree[id].l==tree[id].r){ tree[id].sum=(int)sqrt(tree[id].sum); return ; } int mid=(tree[id].l+tree[id].r)>>1; if(t<=mid) update(s,t,id<<1); else if(mid<s) update(s,t,(id<<1)+1); else{ update(s,mid,id<<1); update(mid+1,t,(id<<1)+1); } tree[id].sum=tree[id<<1].sum+tree[(id<<1)+1].sum;}ll query(int s,int t,int id){ if(tree[id].r-tree[id].l+1==tree[id].sum) /// return t-s+1; if(tree[id].l==s && tree[id].r==t) return tree[id].sum; int mid=(tree[id].l+tree[id].r)>>1; if(t<=mid) return query(s,t,id<<1); else if(mid<s) return query(s,t,(id<<1)+1); else return query(s,mid,id<<1)+query(mid+1,t,(id<<1)+1);}int main(){ int i,n,m,whi,s,t,cas=0; while(scanf("%d",&n)!=EOF){ printf("Case #%d:\n",++cas); for(i=1;i<=n;i++) scanf("%I64d",&num[i]); build(1,n,1); scanf("%d",&m); for(i=1;i<=m;i++){ scanf("%d %d %d",&whi,&s,&t); if(s>t){ int tem=t; t=s; s=tem; } if(whi==0) update(s,t,1); else printf("%I64d\n",query(s,t,1)); } printf("\n"); }}
- HDU 4027 单点更新+“剪枝”
- hdu 4027 Can you answer these queries?(线段树)(单点更新 但需要标记记录剪枝)
- hdu 2795 单点更新
- hdu 1166 单点更新
- hdu 1754 单点更新
- hdu 1166 敌兵布阵(单点更新)
- hdu 2795 Billboard(单点更新)
- HDU 2795 Billboard [线段树-单点更新]
- HDU 1166 单点更新 线段树
- hdu 4339 线段树 单点更新
- hdu - 4325- Flowers - 区间更新,单点查询
- hdu 1754 线段树 单点更新 水
- 线段树 : hdu 1166 示例 [ 单点更新 ]
- 线段树 : hdu 1166 示例 [ 单点更新 ]
- hdu 3950 Parking Log(单点更新)
- hdu 3874 Necklace 线段树 单点更新
- hdu 2795 Billboard 线段树 单点更新
- hdu 2711(线段树单点更新)
- 839 - Not so Mobile--递归水题
- 右键菜单没有新建文本文档txt
- Spring+Hibernate注解事务
- HDU——4342(数论)
- Office 2007 中 Word 出现 Setup Error 的解决方法
- HDU 4027 单点更新+“剪枝”
- hdu 1003 Max Sum
- 初级程序员必知--第一个程序是这样写出来的!
- viewDidUnload释疑
- UVa 10670 - Work Reduction
- HDU-1711(KMP)
- ContentType ,charset和pageEncoding的区别
- JSON
- 快速删除超大文件夹