[日常摸鱼][poj2777]Count Color-线段树
辣鸡会考考完啦哈哈哈哈
题意:一块板分成$L$块,每次给一段连续的块染色或者询问一段有几种颜色,颜色的范围$\leq 30$
我记得我好像做过一个类似的二维染色的问题…不过那个用树状数组直接过掉了…
这题颜色范围这么小的范围直接想到线段树了吧,直接把一个区间的颜色二进制按位压缩成一个状态,维护区间或
题面还特地说了可能$a>b$…然而我没看到
#include<cstdio>
const int N=100005;
inline int read()
{
int s=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){s=s*10+c-'0';c=getchar();}
return s*f;
}
int n,o,t;
int tr[N<<2],tag[N<<2];
char s[5];
inline void swap(int &a,int &b){int t=a;a=b;b=t;}
#define lson (node<<1)
#define rson (node<<1|1)
inline void push_up(int node)
{
tr[node]=tr[lson]|tr[rson];
}
inline void push_down(int node,int l,int r)
{
if(tag[node]==-1)return;
tag[lson]=tag[rson]=tag[node];
tr[lson]=tr[rson]=(1<<(tag[node]-1));
tag[node]=-1;
}
inline void build(int node,int l,int r)
{
tag[node]=-1;tr[node]=1;
if(l==r)return;
int mid=(l+r)>>1;
build(lson,l,mid);build(rson,mid+1,r);
}
inline void modify(int node,int l,int r,int ql,int qr,int v)
{
if(ql<=l&&r<=qr)
{
tag[node]=v;
tr[node]=(1<<(v-1));
return;
}push_down(node,l,r);
int mid=(l+r)>>1;
if(mid>=ql)modify(lson,l,mid,ql,qr,v);
if(mid+1<=qr)modify(rson,mid+1,r,ql,qr,v);
push_up(node);
}
inline int query(int node,int l,int r,int ql,int qr)
{
if(ql<=l&&r<=qr)return tr[node];
push_down(node,l,r);int res=0,mid=(l+r)>>1;
if(mid>=ql)res|=query(lson,l,mid,ql,qr);
if(mid+1<=qr)res|=query(rson,mid+1,r,ql,qr);
return res;
}
int main()
{
//freopen("input.in","r",stdin);
n=read();t=read();o=read();
build(1,1,n);
for(register int i=1;i<=o;i++)
{
scanf("%s",s+1);
if(s[1]=='C')
{
int a,b,c;a=read();b=read();c=read();
if(a>b)swap(a,b);modify(1,1,n,a,b,c);
}else{
int a,b;a=read();b=read();
if(a>b)swap(a,b);
int sum=query(1,1,n,a,b),res=0;
for(register int k=0;k<=32;k++)
{
if(sum&(1ll<<k))res++;
}printf("%d\n",res);
}
}
return 0;
}
[日常摸鱼][poj2777]Count Color-线段树的更多相关文章
- [poj2777] Count Color (线段树 + 位运算) (水题)
发现自己越来越傻逼了.一道傻逼题搞了一晚上一直超时,凭啥子就我不能过??? 然后发现cin没关stdio同步... Description Chosen Problem Solving and Pro ...
- POJ2777 Count Color 线段树区间更新
题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B&qu ...
- Count Color(线段树+位运算 POJ2777)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39917 Accepted: 12037 Descrip ...
- POJ 2777 Count Color(线段树之成段更新)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33311 Accepted: 10058 Descrip ...
- poj 2777 Count Color(线段树)
题目地址:http://poj.org/problem?id=2777 Count Color Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- poj 2777 Count Color(线段树区区+染色问题)
题目链接: poj 2777 Count Color 题目大意: 给出一块长度为n的板,区间范围[1,n],和m种染料 k次操作,C a b c 把区间[a,b]涂为c色,P a b 查 ...
- poj 2777 Count Color(线段树、状态压缩、位运算)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38921 Accepted: 11696 Des ...
- poj 2777 Count Color - 线段树 - 位运算优化
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42472 Accepted: 12850 Description Cho ...
- POJ P2777 Count Color——线段树状态压缩
Description Chosen Problem Solving and Program design as an optional course, you are required to sol ...
随机推荐
- python实现一个无序单链表
class Node: """先定一个node的类""" def __init__(self, value=None, next=None) ...
- 思维导图软件iMindMap怎么使用
人人都说,思维导图记忆法实用.可是,我们应该如何使用思维导图呢?又该如何从思维小白摇身一变成为逻辑大神呢?俗话说,心急吃不了热豆腐,让我们一步一步来,慢慢接触使用思维导图吧. 小编作为"过来 ...
- 网络系列之 jsonp 百度联想词
jsonp 可以跨域,ajax 不可以,ajax 会受到浏览器的同源策略影响,何为同源策略? 同源策略就是,如果 A 网站 想拿 B网站里的资源, 那么 有三个条件, 你得满足才能拿. 第一个:域名相 ...
- 基于Python Requests的数据驱动的HTTP接口测试
发表于:2017-8-30 11:56 作者:顾翔 来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html ...
- ubuntu安装php的 mongodb扩展
wget https://pecl.php.net/get/mongodb-1.2.6.tgztar -zxvf mongodb-1.2.6.tgz cd mongodb-1.2.6 /usr/bin ...
- Redis 基础设计结构之四 set(集合)
Redis 有 5 种基础数据结构,分别为:string (字符串).list (列表).set (集合).hash (哈希) 和 zset (有序集合). 今天来说一下set(集合)这种存储结构,s ...
- Sysbench对Mysql进行基准测试
前言 1.基准测试(benchmarking)是性能测试的一种类型,强调的是对一类测试对象的某些性能指标进行定量的.可复现.可对比的测试. 进一步来理解,基准测试是在某个时候通过基准测试建立一个已知的 ...
- python3时间函数
上一篇是生成测试报告的代码,如果重复运行测试报告名称相同会不停的覆盖,之前的测试报告也会丢失,无法追溯之前的问题.那么如何解决这个问题了呢? 首先想到的是用随机函数取随机名称,一旦生成的报告较多时,无 ...
- Python中import模块时报SyntaxError: (unicode error)utf-8 codec can not decode 错误的解决办法
老猿有个通过UE编辑(其他文本编辑器一样有类似问题)的bmi.py文件,在Python Idle环境打开文件执行时没有问题,但import时报错: SyntaxError: (unicode erro ...
- PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在Model中的项可以通过flags()方法查询对应项是否能被选择.拖拽或其他操作,对应的返回值类型 ...