[日常摸鱼][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 ...
随机推荐
- 来看看面试必问的HashMap,一次彻底帮你搞定HashMap源码
HashMap结构 数组+链表+红黑树 链表大于8转红黑树,红黑树节点数小于6退回链表. 存放的key-value的Node节点 static class Node<K,V> implem ...
- Guitar Pro教程之组织小节
上一章节我们讲述了关于Guitar Pro 7的主界面的相关功能的介绍,对于初学作曲,又是吉他的初学者,刚刚接触{cms_selflink page='index' text='Guitar Pro' ...
- MathType输入矩阵和行列式的技巧
高等代数里,经常要使用到矩阵和行列式,尤其是在写论文时,如何编辑矩阵和行列式呢?比较好的方法就是使用专业的公式编辑器MathType进行编辑,下面就一起来学习具体的编辑技巧. 具体步骤如下: 步骤一 ...
- 使用Mac清理工具CleanMyMac对Mac电脑进行维护
CleanMyMac是Mac系统下的一款苹果电脑清理软件,同时也是一款优秀的电脑维护软件,它能通过用户手动运行CleanMyMac内置脚本文件,释放电脑内存,帮助电脑缓解卡顿现象,保证电脑的良好持续运 ...
- CorelDRAW快速去除图片背景颜色
当我们需要从网上借助一些素材图片在CorelDRAW中运用时,往往需要去掉图片的背景颜色.本文小编分享CDR中如何快速去除图片背景颜色的方法,通过此方法可以做简单的照片抠图.合成. 1. 打开Core ...
- ABBYY FineReader 15 中保存和导出PDF文档的小细节
运用ABBYY FineReader OCR文字识别软件,用户能将各种格式的PDF文档保存为新的PDF文档.PDF/A格式文档,以及Microsoft Word.Excel.PPT等格式.在保存与导出 ...
- guitar pro 系列教程(十一):Guitar Pro菜单工具之MIDI效果的提升
对于新手的一些朋友,看谱,编曲时使用Guitar Pro时,因为对其功能不是很了解而显得困难重重,导致出现的音频效果不是很理想,因此,小编今天要做的便是,单独把Guitar Pro里的MIDI效果如果 ...
- FL studio系列教程(九):FL Studio中如何排列编曲
在FL Studio水果音乐制作软件播放列表中可以对制作的样本进行编排,除此之外,播放列表中排列的对象被叫做剪辑.在其中可以排列以下剪辑. 1.样本剪辑:样本剪辑包含了编排好的插件乐器音符数据. 2. ...
- 【VUE】4.配置axios发起请求
1.配置axios 1. 前端请求后端接口进行数据交互的时候,需要配置axios 2. 导入axios包, main.js import axios from 'axios' 3. 挂载到原型配置上, ...
- ubuntu解决安装速度问题
速度慢得原因:linux系统很多的软件源链接都是在国外服务器上,由于国内防火墙影响导致下载速度极慢,甚至超时. 解决办法一:购买梯子 这样你就可以快速的下载国外服务器的软件包了,但是你得有个可靠得梯子 ...