POJ 2777 Count Color
来源:互联网 发布:库里16赛季数据 编辑:程序博客网 时间:2024/05/29 10:42
这题其实之前写过,应该算是线段树中比较简单的,不过自己还是被坑了很长时间,就是因为一个小小的错误,怎么找都找不到,哎,急哭了。
这题在找颜色种类的时候,因为最多只有30种颜色,所以可以用一个整型变量来存储,一个位代表一种颜色。这里就要考虑对位的处理了,具体见代码。
#include<cstdio>#include<cstring>const int N=100005;int L,T,O;struct board{ int left,right,color; bool ischange;}node[N<<2];void set_tree(int id,int l,int r){ node[id].left=l,node[id].right=r,node[id].color=1,node[id].ischange=false; if(l==r) return; int lson=id<<1,rson=lson+1,mid=(l+r)/2; set_tree(lson,l,mid); set_tree(rson,mid+1,r);}void update(int id,int l,int r,int c){ if(node[id].left==l&&node[id].right==r) { node[id].color=1<<(c-1); node[id].ischange=true; return; } int lson=id<<1,rson=lson+1,mid=(node[id].left+node[id].right)/2; if(node[id].ischange) { node[lson].ischange=true,node[rson].ischange=true; node[lson].color=node[id].color,node[rson].color=node[id].color; node[id].ischange=false; } if(r<=mid) update(lson,l,r,c); else if(l>mid) update(rson,l,r,c); else { update(lson,l,mid,c); update(rson,mid+1,r,c); } node[id].color=node[lson].color|node[rson].color;}void query(int id,int l,int r,int &ans){ if(node[id].ischange||(node[id].left==l&&node[id].right==r)) { ans|=node[id].color;//就是这里被坑了,我没有加或,而是直接赋值了,当时估计脑袋秀逗了。 return; } int lson=id<<1,rson=lson+1,mid=(node[id].left+node[id].right)/2; if(r<=mid) query(lson,l,r,ans); else if(l>mid) query(rson,l,r,ans); else { query(lson,l,mid,ans); query(rson,mid+1,r,ans); }}int main(){ int a,b,c; char s[3]; while(scanf("%d%d%d",&L,&T,&O)!=EOF) { set_tree(1,1,L); for(int i=1;i<=O;i++) { scanf("%s",s); if(s[0]=='C') { scanf("%d%d%d",&a,&b,&c); if(a>b)//这里要比较a,b的大小 update(1,b,a,c); else update(1,a,b,c); } else { scanf("%d%d",&a,&b); int ans=0,cnt=0; if(a>b) query(1,b,a,ans); else query(1,a,b,ans); for(int i=0;i<T;i++) { int t=ans&1; if(t==1) cnt++; ans=ans>>1; } printf("%d\n",cnt); } } } return 0;}
0 0
- POJ 2777 Count Color
- poj 2777 Count Color
- poj 2777 count color
- poj 2777 Count color
- poj 2777 Count Color
- Poj 2777 Count Color
- POJ 2777 Count Color
- poj 2777 count color
- POJ 2777 Count Color
- poj 2777 Count Color
- poj 2777 count color
- poj 2777 Count Color
- poj 2777 Count Color
- POJ 2777 Count Color
- poj 2777 Count Color
- poj 2777 Count Color
- POJ--2777--Count Color
- Count Color poj 2777
- JS一些实用的方法
- mkisofs参数及用法详解---linux制作ISO启动盘命令
- u盘做系统
- Java笔记——集合类:Map的使用
- 游戏项目实践(二)
- POJ 2777 Count Color
- HTML5 AJAX history.pushState
- Arm Linux Kernel 构建 情景分析
- easyui中前台利用js导出显示的datagrid
- gradle学习(11)-编写构建脚本
- 一个简单的ORM制作(SQL帮助类)
- Android:手把手教你打造可缩放移动的ImageView
- selenium c# 自动化测试demo
- iOS时间轴的实现