POJ2777(线段树区间更新+LAZY)
来源:互联网 发布:js删除所有cookie 编辑:程序博客网 时间:2024/06/02 15:52
涂色问题,题意我就不说了。
#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <string>#include <math.h>#define LL long long#define maxn 200005using namespace std;struct Node{int color;int left,right;};struct Node node[maxn*4];int vis[31];void build(int o,int L,int R)//建树{node[o].color=1;//初始为1node[o].left=L;node[o].right=R;if(node[o].left==node[o].right)return;int M=(L+R)>>1;build(o<<1,L,M);build(o<<1|1,M+1,R);}void pushdown(int o)//LAZY操作{if(node[o].color>0){node[o<<1].color=node[o<<1|1].color=node[o].color;node[o].color=-1;}}void update(int o,int L,int R,int c)//更新{if(L<=node[o].left && R>=node[o].right){node[o].color=c;//上色return;}pushdown(o);int M=(node[o].left+node[o].right)>>1;if(R<=M)//左子树update(o*2,L,R,c);else{if(L>M)//右子树update(o*2+1,L,R,c);else//左右子树都有的情况{update(o*2,L,M,c);update(o*2+1,M+1,R,c);}}}void query(int o,int L,int R){if(node[o].color>0){vis[node[o].color]=1;//1表示这种颜色能看到,0表示不能return;}if(node[o].left==node[o].right)return;int M=(node[o].left+node[o].right)>>1;if(R<=M)query(o*2,L,R);else{if(L>M)query(o*2+1,L,R);else{query(o*2,L,M);query(o*2+1,M+1,R);}}}int Getans(int t){int ans=0;for(int i=1;i<=t;i++)if(vis[i]==1)ans++;return ans;}int main(){int len,t,o;scanf("%d%d%d",&len,&t,&o);build(1,1,len);while(o--){char ch;getchar();scanf("%c",&ch);if(ch=='C'){int ll,rr,c;scanf("%d%d%d",&ll,&rr,&c);if(ll>rr)//注意ll可能是大于rr的。题目中有说update(1,rr,ll,c);elseupdate(1,ll,rr,c);}else{int ll,rr;memset(vis,0,sizeof(vis));scanf("%d%d",&ll,&rr);if(ll>rr)query(1,rr,ll);elsequery(1,ll,rr);printf("%d\n",Getans(t));}}return 0;}
0 0
- POJ2777(线段树区间更新+LAZY)
- 线段树区间更新poj2777
- POJ2777 - Count Color (线段树 区间更新)
- POJ2777 Count Color 线段树区间更新
- POJ2777 Count Color 线段树区间更新
- 【POJ2777】Count Color-线段树区间更新
- poj2777线段树+lazy思想
- POJ2777线段树染色+lazy
- poj2777 Count Color 线段树区间更新+位操作
- poj2777(线段树lazy标记的使用)
- 线段树(成段更新,区间求和lazy操作 )
- poj 3468 线段树区间更新lazy
- poj2777(延迟更新+线段树)
- hdu-4614-Vases and Flowers(线段树,区间更新区间查询,lazy,二分)
- UVA 11992 线段树区间更新 + 两个lazy(二维线段树)
- HDU3577:Fast Arrangement(线段树区间更新+lazy)
- FZU1608 Huge Mission 线段树lazy区间更新+求和
- HDU 1698 线段树区间更新以及lazy思想
- ubuntu-ROM-tools
- 共享池之五:Shared Pool子池与结果集缓存技术
- 2012/4/9----二叉查找树(二叉排序树)的各种操作
- 9.9 qt5creator + opencv2.4.6 的界面程序
- 共享池之四: row cache--字典缓冲区
- POJ2777(线段树区间更新+LAZY)
- 2012年4月25日---红黑树的现实和操作
- Java7中的switch支持String的实现细节
- Unity3D调用系统窗口选择本地文件
- 融资租赁业务的基本知识
- 共享池之六:shared pool latch/ library cache latch /lock pin 简介
- 2012年5月7日---基于斐波那契数列的时间复杂度分析
- 算法训练-移动小球
- 喷水装置1