题目链接:https://www.luogu.org/problemnew/show/P1558

我知道三十棵线段树很暴力,可是我们可以状压啊。

颜色最多30,不会爆int

另外 吐槽评测机

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int n, k, c, q;
class Segment_Tree{
public:
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1
int tree[maxn<<2], lazy[maxn<<2];
void build(int l, int r, int rt)
{
if(l == r)
{
tree[rt] = 1<<1;
return;
}
int mid = (l + r) >> 1;
build(lson);
build(rson);
PushUP(rt);
}
void update(int left, int right, int add, int l, int r, int rt)
{
if(l >= left && r <= right)
{
lazy[rt] = add;
tree[rt] = (1 << add);
return;
}
int mid = (l + r) >> 1;
PushDOWN(l, r, rt);
if(left <= mid) update(left, right, add, lson);
if(right > mid) update(left, right, add, rson);
PushUP(rt);
}
int query(int left, int right, int l, int r, int rt)
{
int res = 0;
if(l >= left && r <= right)
{
return tree[rt];
}
int mid = (l + r) >> 1;
PushDOWN(l, r, rt);
if(left <= mid) res |= query(left, right, lson);
if(right > mid) res |= query(left, right, rson);
return res;
}
private:
void PushUP(int rt)
{
tree[rt] = tree[rt<<1] | tree[rt<<1|1];
}
void PushDOWN(int l, int r, int rt)
{
if(lazy[rt])
{
tree[rt<<1] = (1 << lazy[rt]);
tree[rt<<1|1] = (1 << lazy[rt]);
lazy[rt<<1] = lazy[rt];
lazy[rt<<1|1] = lazy[rt];
lazy[rt] = 0;
}
}
}T;
int main()
{
scanf("%d%d%d",&n,&c,&q);
T.build(1,n,1);
for(int i = 1; i <= q; i++)
{
char opt;
int x, y, k;
cin>>opt;
if(opt=='C')
{
scanf("%d%d%d",&x, &y, &k);
if (x > y) swap(x, y);
T.update(x, y, k, 1, n, 1);
}
else
{
scanf("%d%d",&x,&y);
if (x > y) swap(x, y);
int res = T.query(x,y,1,n,1), ans=0;
for (int j = 1; j <= c; j++) if (res & (1 << j)) ans++;
printf("%d\n",ans);
}
}
return 0;
}

【luogu P1558 色板游戏】 题解的更多相关文章

  1. 线段树(压位)luogu P1558色板游戏

    题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L. 现在色板上只 ...

  2. Luogu P1558 色板游戏【线段树/状态压缩】By cellur925

    题目传送门 今天非常想再看一遍霸王别姬想不进去题于是开始刷数据结构 注意到至多只有\(30\)种颜色,啊啊啊啊我一开始竟然想的不是状态压缩而是在线段树中存一个30大小的数组,这样每次更新的时候暴力循环 ...

  3. Luogu P1558 色板游戏

    (此题与POJ2777重题) 为了加深对线段树的记忆,然后开始搞这道题. TM的WA了一下午就是发现x可能大于y(然而题目里说的还很清楚,我TM没看见) 这道题只需要在线段树的板子上改一些地方就可以了 ...

  4. P1558 色板游戏

    P1558 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...

  5. P1558 色板游戏 状压线段树

    P1558 色板游戏 状压线段树 题面 洛谷P1558 每次不同颜色覆盖一段区间,每次询问一段区间有多少种颜色 因为颜色数\(T\)很小,使用二进制表示状态当前区间有那些颜色,二进制第\(i\)位表示 ...

  6. 洛谷P1558 色板游戏 [线段树]

    题目传送门 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...

  7. luogu 1558 色板游戏

    写这篇博客不是为了总结我的算法,而是为了纪念让我爆零的套路..... 色板游戏 色板长度为\(L\),\(L\)是一个正整数,所以我们可以均匀地将它划分成\(L\)块\(1\)厘米长的小方格.并从左到 ...

  8. 洛谷P1558 色板游戏

    题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L.现在色板上只有 ...

  9. 洛谷 P1558 色板游戏

    洛谷 题解里面好像都是压位什么的, 身为蒟蒻的我真的不会, 所以就来谈谈我的30颗线段树蠢方法吧! 这题初看没有头绪. 然后发现颜色范围好像只有30: 所以,我就想到一种\(sao\)操作,搞30颗线 ...

随机推荐

  1. ES6学习笔记(二)-字符串的扩展

    一.字符的 Unicode 表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点. 表示法只限于码点在\u0000~\uFFFF之间的字符, ...

  2. Github+hexo+next搭建教程

    今天参考的是大神的教程,学了一个新东西,但是可能由于原教程中运用的npm包与我当前使用的npm包版本不同的原因,有出过多处运行错误,但都在此教程中解决了; 总结了下命令: npm install he ...

  3. java截取字符串

    public class Temp { public static void main(String[] args) { String a="dsadgafa34"; System ...

  4. 手动替换WORDPRESS的GOOGLE字体等加速【非插件】

    手动替换WORDPRESS的GOOGLE字体等加速[非插件] 179 看过 | 2015年3月4日 | Linux, 随意Coding | 暂无评论 查找需要替换的地方 Linux下,在网站文件夹中, ...

  5. 状态开关(ToggleButton)

    状态开关(ToggleButton): 常用属性:isChecked(是否被选中,如true) 监听:1.监听方法:setOnCheckedChangeListener 2.监听器:CompoundB ...

  6. Excel 2016 for Mac

    1. Excel for Mac 的 Developer tab下没有XML组,因此无法从xml导入或者导出到xml: 2. Excel for Mac 中没有Mark as Finnal的功能: 3 ...

  7. git中常见操作指令

    从git上拉下一个项目: 1.git clone 项目链接                  2. git checkout development (切换到development分支)       ...

  8. redis安装、配置、启停

    Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and ...

  9. IT之路如何走得更远

    作者:石头2075链接:http://www.jianshu.com/p/8c6417e16505著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 首先,你需要在合适的年纪进入了这 ...

  10. 关于serialVersionUID与序列化"

    java序列化trick and trap 厂内经常出现序列化对象版本不匹配问题,于是发本文说明一些序列化的注意点 调用MQ.memcached.rpc等等涉及到远程通讯的都会经过序列化,虽然客户端透 ...