标签:des style blog http io ar color os sp
http://acm.hdu.edu.cn/showproblem.php?pid=1698
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #define N 1000010 using namespace std; struct node { int l,r,lz,w; } q[4*N]; int n; void pushup(int rt) { q[rt].w=q[rt<<1].w+q[rt<<1|1].w; } void pushdown(int rt,int len) { if(q[rt].lz) { q[rt<<1].lz=q[rt].lz; q[rt<<1|1].lz=q[rt].lz; q[rt<<1].w=q[rt].lz*(len-(len>>1)); q[rt<<1|1].w=q[rt].lz*(len>>1); q[rt].lz=0; } } void build(int l,int r,int rt) { q[rt].l=l; q[rt].r=r; q[rt].w=1; q[rt].lz=0; if(l==r) return ; int mid=(l+r)>>1; build(l,mid,rt<<1); build(mid+1,r,rt<<1|1); pushup(rt); return ; } void update(int lf,int rf,int l,int r,int rt,int key) { if(lf<=l&&rf>=r) { q[rt].w=key*(r-l+1); q[rt].lz=key; return ; } pushdown(rt,(r-l+1)); int mid=(l+r)>>1; if(lf<=mid) update(lf,rf,l,mid,rt<<1,key); if(rf>mid) update(lf,rf,mid+1,r,rt<<1|1,key); pushup(rt); } int main() { int T,m,s1,s2,key; scanf("%d",&T); for(int z=1; z<=T; z++) { scanf("%d",&n); build(1,n,1); scanf("%d",&m); for(int i=0; i<m; i++) { scanf("%d%d%d",&s1,&s2,&key); update(s1,s2,1,n,1,key); } printf("Case %d: The total value of the hook is %d.\n",z,q[1].w); } }
HDU1698:Just a Hook(线段树区域更新模板题)
标签:des style blog http io ar color os sp
原文地址:http://www.cnblogs.com/zhangmingcheng/p/4149773.html