poj 2777
来源:互联网 发布:unity3d 编辑:程序博客网 时间:2024/05/20 17:40
题目:http://poj.org/problem?id=2777
线段树。线段覆盖+lazy标记。处理查询的时候要注意。不要查询到最下面的子树,不然会超时
下面是AC代码:
#include<cstdio>#include<cstring>#include<set>#include<algorithm>using namespace std;const int maxn = 100000+10;#define lson id<<1,l,m#define rson id<<1|1,m+1,rstruct node{ int l,r; int color;}T[maxn<<2];void build(int id,int l,int r){ T[id].l=l;T[id].r=r; T[id].color=-1; if(l==r) return ; int m=(l+r)>>1; build(lson); build(rson);}void update(int id,int l,int r,int color){ if(T[id].l>=l&&T[id].r<=r){ T[id].color=color; return ; } if(T[id].color!=-1){ T[id<<1].color=T[id<<1|1].color=T[id].color; T[id].color=-1; } int m=(T[id].l+T[id].r)>>1; if(m>=r) update(id<<1,l,r,color); else if(m<l) update(id<<1|1,l,r,color); else{ update(lson,color); update(rson,color); }}int ans[40];void query(int id,int l,int r){ if(T[id].color!=-1){ ans[ T[id].color ] = 1; return ; } int m=(T[id].l+T[id].r)>>1; if(m>=r) query(id<<1,l,r); else if(l>m) query(id<<1|1,l,r); else { query(id<<1,l,m); query(id<<1|1,m+1,r); }}int main(){ int l,t,o; char op[100]; while(scanf("%d%d%d",&l,&t,&o)!=EOF){ build(1,1,l); update(1,1,l,1); for(int i=0;i<o;i++){ scanf("%s",op); int left,right,color; if(op[0]=='C'){ scanf("%d%d%d",&left,&right,&color); if(left>right) swap(left,right); update(1,left,right,color); } else{ scanf("%d%d",&left,&right); if(left>right) swap(left,right); memset(ans,0,sizeof(ans)); query(1,left,right); int res=0; for(int i=1;i<=30;i++) if(ans[i]>0) res++; printf("%d\n",res++); } } } return 0;}
- poj 2777
- poj 2777
- poj 2777
- poj 2777
- poj 2777
- POJ 2777
- POJ 2777
- poj-2777
- poj 2777
- poj 2777
- POJ 2777
- poj 2777
- poj 2777
- poj 2777
- Poj 2777
- poj 2777
- poj 2777
- POJ-2777
- centos5 配置 goagent
- ArcGIS API for Javascript 下载地址
- LINUX内核中的xx_initcall初始化标号
- oracle 服务启动,关闭脚本(windows系统下)
- Nova 配置参数
- poj 2777
- C++学习中遇到的问题(求解答)
- 嫣然一笑苦了情
- css3 box-shadow
- shell脚本报错说 bash解释器损坏,没有该目录或文件的解决方案
- gson的简要使用--关于web端和android之间的数据传输
- windows编程使用递归方法遍历文件的方法
- 2012 年12 个值得收藏的新jQuery插件
- 趋势科技笔试题