hdu1698 Just a Hook(成段替换 lazy标记)
来源:互联网 发布:朝鲜洪水知乎 编辑:程序博客网 时间:2024/05/16 04:33
成段替换 lazy标记
题意:成段覆盖染色,求颜色值的总和。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define lson l,m,rt<<1 //函数用左儿子#define rson m+1,r,rt<<1|1 //函数用右儿子#define havemid int m=(l+r)>>1 //取节点中点#define left (rt<<1) //左儿子#define right (rt<<1|1) //右儿子const int maxn=100005; //最大节点个数int sum[maxn<<2]; //节点个数,开maxn的4倍int col[maxn<<2]; //lazy 标记void pushup(int rt){ sum[rt]=sum[left]+sum[right];}void pushdown(int rt,int len){ if(col[rt]){ //被标记了 col[left]=col[right]=col[rt]; //标记向下传 sum[left]=(len-(len>>1))*col[rt]; //左儿子更新 sum[right]=(len>>1)*col[rt]; //右 col[rt]=0; //置标记为0 }}void build(int l,int r,int rt){ col[rt]=0; if(l==r){ sum[rt]=1;return ; } havemid; build(lson); build(rson); pushup(rt);}void update(int L,int R,int c,int l,int r,int rt){ if(L<=l&&r<=R){ col[rt]=c; sum[rt]=c*(r-l+1); return ; } pushdown(rt,r-l+1); //先看有没有标记 havemid; if(L<=m)update(L,R,c,lson); if(R>m)update(L,R,c,rson); pushup(rt); }int main(){ int T,n,Q,ca=1,a,b,c; scanf("%d",&T); while(T--) { scanf("%d",&n); build(1,n,1); scanf("%d",&Q); while(Q--) { scanf("%d%d%d",&a,&b,&c); update(a,b,c,1,n,1); } printf("Case %d: The total value of the hook is %d.\n",ca++ , sum[1]); } return 0;}
- hdu1698 Just a Hook(成段替换 lazy标记)
- hdu1698 Just a Hook(成段更新+懒惰标记)
- HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】
- HDU1698 Just a Hook(线段树+成段更新+lazy标记)
- HDU1698 Just a Hook [lazy+成段更新]
- HDU1698--Just a Hook(成段更新)
- HDU1698 Just a Hook(成段更新)【模板】
- hdu1698 Just a Hook(线段树成段更新lazy)
- hdu1698 Just a Hook (线段树功能:成段替换,总区间求和)
- hdu1698 Just a Hook 线段树,成段更新
- 线段树---成段更新hdu1698 Just a Hook
- hdu1698 Just a Hook 线段树成段替换
- HDU1698 Just a Hook(线段树成段替换)
- HDU1698 Just a Hook 线段树成段替换
- Just a Hook (线段树+lazy标记)
- Just a Hook (区间更新,lazy标记)
- HDU 1698 JUST a hook (线段树 成段替换 区间求和 延迟标记)
- hdu1689-Just a Hook-线段树-整段区间的替换(延迟标记)
- 【java学习】对java反射的学习及参数赋值的研究
- FCKeditor总结
- linux网络编程:并发服务器的模型
- 手机支付宝密码存储机制分析
- javascript中必须使用var声明局部变量的情况
- hdu1698 Just a Hook(成段替换 lazy标记)
- Eclipse:invalid project description
- HDU1203(01背包)
- C++中Int转换成String
- 两个类中相同数据成员移植
- C++ 从零单排(4)- ACM二
- ENVI/IDL——Java-IDL Export Bridge
- HDU1087(DP)
- 教你如何把mts转换成mpeg格式进行视频编辑