辣鸡会考考完啦哈哈哈哈

题意:一块板分成$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-线段树的更多相关文章

  1. [poj2777] Count Color (线段树 + 位运算) (水题)

    发现自己越来越傻逼了.一道傻逼题搞了一晚上一直超时,凭啥子就我不能过??? 然后发现cin没关stdio同步... Description Chosen Problem Solving and Pro ...

  2. POJ2777 Count Color 线段树区间更新

    题目描写叙述: 长度为L个单位的画板,有T种不同的颜料.现要求按序做O个操作,操作分两种: 1."C A B C",即将A到B之间的区域涂上颜色C 2."P A B&qu ...

  3. Count Color(线段树+位运算 POJ2777)

    Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39917 Accepted: 12037 Descrip ...

  4. POJ 2777 Count Color(线段树之成段更新)

    Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33311 Accepted: 10058 Descrip ...

  5. poj 2777 Count Color(线段树)

    题目地址:http://poj.org/problem?id=2777 Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  6. poj 2777 Count Color(线段树区区+染色问题)

    题目链接:  poj 2777 Count Color 题目大意:  给出一块长度为n的板,区间范围[1,n],和m种染料 k次操作,C  a  b  c 把区间[a,b]涂为c色,P  a  b 查 ...

  7. poj 2777 Count Color(线段树、状态压缩、位运算)

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38921   Accepted: 11696 Des ...

  8. poj 2777 Count Color - 线段树 - 位运算优化

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 42472   Accepted: 12850 Description Cho ...

  9. POJ P2777 Count Color——线段树状态压缩

    Description Chosen Problem Solving and Program design as an optional course, you are required to sol ...

随机推荐

  1. 博客新域名www.tecchen.tech

    新年祝福 祝新的一年,大朋友实现所有梦想,小朋友健康成长- 新域名 https://www.tecchen.tech 有效期:10年 旧链接 之前的链接请自行替换为新链接地址,包括但不限于以下二级域名 ...

  2. 如何在苹果电脑下载器Folx中管理下载列表

    Folx是一款Mas OS专用的下载器,提供了便捷的下载管理.灵活的设置.今天小编准备跟大家聊一聊关于Folx中常见的几种下载管理方式. 一.管理任务状态栏 在Folx下载面板上,可以通过类别查看任务 ...

  3. 前后端分离之前端vue

    npm install --global vue-clivue init webpack my-project   cd my-project   npm install   npm run dev ...

  4. iOS问题:pch not found

    问题描述: clang: error: no such file or directory: '/Users/apple/Desktop/迅点App_Mark/FaceHelp/FaceHelp-Pr ...

  5. python计算时间差

    前言 之前写代码都是看打印的初始和结束时间然后自己算间隔时间,感觉总是不方便,这不符合python的优雅简洁,于是去寻找简便之道. 方法 time模块计算时间差 import time s_time ...

  6. H5 ,Css实现了你的logo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. vscode 中 eslint prettier 和 eslint -loader 配置关系

    前置 本文将探究 vscode prettier 插件 和 eslint 插件在 vscode 中的配置以及这两者对应的在项目中的配置文件的关系,最后提及 vscode eslint 插件配置与 es ...

  8. vue微博回调空页面

    1.vue微博回调空页面 注:微博回调空页面为:http://127.0.0.1:8888/oauth/callback/ 1.1 页面路径 components\oauth.vue <temp ...

  9. kafka监听出现的问题,解决和剖析

    问题如下: kafka为什么监听不到数据 kafka为什么会有重复数据发送 kafka数据重复如何解决 为什么kafka会出现俩个消费端都可以消费问题 kafka监听配置文件 一. 解决问题一(kaf ...

  10. 推荐4个Flutter重磅开源项目

    早上好,骚年,我是小 G,我的公众号「菜鸟翻身」会推荐 GitHub 上有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注我. 近年来,随着移动智能设备的快速普及,移动多端统一开 ...