hdu Just a Hook 线段树——成段操作 区域覆盖
2012-08-12 15:11
344 查看
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1698
大意:先输入一个t代表有t个案例,然后输入个数n代表一共有n个数,值为他们的编号1~n。然后输入q,代表q各更新,再输入a,b,c,代表把a_b的值全部改为c;然后求出所有的和。
View Code
大意:先输入一个t代表有t个案例,然后输入个数n代表一共有n个数,值为他们的编号1~n。然后输入q,代表q各更新,再输入a,b,c,代表把a_b的值全部改为c;然后求出所有的和。
View Code
#include <stdio.h> #define maxn 100007*4 struct node { int sum; int lazy; }tr[maxn]; void pushup(int rt) { tr[rt].sum = tr[rt<<1].sum+tr[rt<<1|1].sum; } void build(int l,int r,int rt) { if(l == r) { tr[rt].sum = 1; tr[rt].lazy = 0; return; } int m = (l+r)>>1; build(l,m,rt<<1); build(m+1,r,rt<<1|1); pushup(rt); return; } void pushdown(int rt,int len) { if(tr[rt].lazy) { tr[rt<<1].lazy = tr[rt<<1|1].lazy = tr[rt].lazy; tr[rt<<1].sum = (len-(len>>1))*tr[rt].lazy; tr[rt<<1|1].sum = (len>>1)*tr[rt].lazy; tr[rt].lazy = 0; } } void update(int lx,int rx,int l,int r,int val,int rt) { if(lx <= l && rx >= r)//只要在要求的区域内就改变。 { tr[rt].sum = val*(r-l+1); tr[rt].lazy = val; return; } pushdown(rt,r-l+1); int m = (l+r)>>1; if(lx <= m) update(lx,rx,l,m,val,rt<<1); if(rx > m) update(lx,rx,m+1,r,val,rt<<1|1); pushup(rt); return; } int main() { int cas,t,n,m,i,j; scanf("%d",&t); cas = 0; while(t--) { cas++; scanf("%d",&n); build(1,n,1); scanf("%d",&m); int x,y,val; while(m--) { scanf("%d %d %d",&x,&y,&val); update(x,y,1,n,val,1); } printf("Case %d: The total value of the hook is %d.\n",cas,tr[1].sum); } return 0; }
相关文章推荐
- hdu 1698 Just a Hook(线段树区间覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- hdu 1698 Just a Hook (线段树区间操作,)
- hdu-1698-Just a Hook-线段树-区域更新,区域查询
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- HDU 1698 Just a Hook(线段树区间覆盖)
- hdu1698 Just a Hook 线段树 区间更新 懒操作
- HDU 1698 Just a Hook // 线段树 区间更新
- HDU 1698 Just a Hook(线段树-区间修改|区间查询)
- HDU 1698 Just a Hook(线段树:区间set,区间查询)
- hdu 1698 Just a Hook 线段树 成段更新
- Just a Hook - HDU 1698 线段树
- hdu 1968 Just a Hook 线段树区间更新
- HDU 1698-Just a Hook(线段树区间更新)