【luogu P1558 色板游戏】 题解
题目链接: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 色板游戏】 题解的更多相关文章
- 线段树(压位)luogu P1558色板游戏
题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L. 现在色板上只 ...
- Luogu P1558 色板游戏【线段树/状态压缩】By cellur925
题目传送门 今天非常想再看一遍霸王别姬想不进去题于是开始刷数据结构 注意到至多只有\(30\)种颜色,啊啊啊啊我一开始竟然想的不是状态压缩而是在线段树中存一个30大小的数组,这样每次更新的时候暴力循环 ...
- Luogu P1558 色板游戏
(此题与POJ2777重题) 为了加深对线段树的记忆,然后开始搞这道题. TM的WA了一下午就是发现x可能大于y(然而题目里说的还很清楚,我TM没看见) 这道题只需要在线段树的板子上改一些地方就可以了 ...
- P1558 色板游戏
P1558 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...
- P1558 色板游戏 状压线段树
P1558 色板游戏 状压线段树 题面 洛谷P1558 每次不同颜色覆盖一段区间,每次询问一段区间有多少种颜色 因为颜色数\(T\)很小,使用二进制表示状态当前区间有那些颜色,二进制第\(i\)位表示 ...
- 洛谷P1558 色板游戏 [线段树]
题目传送门 色板游戏 题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, .. ...
- luogu 1558 色板游戏
写这篇博客不是为了总结我的算法,而是为了纪念让我爆零的套路..... 色板游戏 色板长度为\(L\),\(L\)是一个正整数,所以我们可以均匀地将它划分成\(L\)块\(1\)厘米长的小方格.并从左到 ...
- 洛谷P1558 色板游戏
题目背景 阿宝上学了,今天老师拿来了一块很长的涂色板. 题目描述 色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格.并从左到右标记为1, 2, ... L.现在色板上只有 ...
- 洛谷 P1558 色板游戏
洛谷 题解里面好像都是压位什么的, 身为蒟蒻的我真的不会, 所以就来谈谈我的30颗线段树蠢方法吧! 这题初看没有头绪. 然后发现颜色范围好像只有30: 所以,我就想到一种\(sao\)操作,搞30颗线 ...
随机推荐
- BZOJ4903: [Ctsc2017]吉夫特
传送门 可以发现,\(\binom{n}{m}\equiv 1(mod~2)\) 当且仅当 \(m~and~n~=~m\) 即 \(m\) 二进制下为 \(n\) 的子集 那么可以直接写一个 \(3^ ...
- [HAOI2009]逆序对数列(加强)
ZJL 的妹子序列 暴力就是 \(\Theta(n\times m)\) 如果 \(n,m \le 10^5\) ? 考虑问题的转换,设 \(a_i\) 表示 \(i\) 小的在它后面的数的个数 \( ...
- HDU P3341 Lost's revenge 题解+数据生成器
Lost and AekdyCoin are friends. They always play "number game"(A boring game based on numb ...
- canvas中strokeRect的渲染问题>>strokeRect把一像素的边框渲染成两像素
> 结论写在头 var oC = document.getElementById('c1'); var oGC = oC.getContext('2d'); oGC.strokeRect(50, ...
- Node.js 的安装
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 的运行环境,简单的说就是运行在服务端的 JavaScript.所以学起来还是比较容易接受的. Node.js 使用事件驱动 ...
- 浏览器根对象window之performance
W3C性能小组引入的新的API,目前IE9以上的浏览器都支持. 为了解决当前性能测试的困难,W3C推出了一套性能API标准,各种浏览器对这套标准的支持如今也逐渐成熟起来.这套API的目的是简化开发者对 ...
- Get a “step-by-step” evaluation in Mathematica
Is it possible in Mathematica to get a step-by-step evaluation of some functions; that's to say, out ...
- Android 显示html标签或者带图片
Android中显示html文件要用Html.fromHtml(...)处理过的返回值,返回值可以成为setText()的参数. 只显示带文本的html可以用下面的方法处理html文件. public ...
- matplotlib点线 坐标刻度 3D图绘制(六)
plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色.线型.点型等要素,语法形式为: plt.plot(X, Y, 'format', ...) 1 点和线的样式 颜色 参数color或 ...
- 安装kubernetes 环境
master: 10.6.2.170 #master节点兼做仓库 node-1: 10.6.2.171 node-2: 10.6.2.172 1.添加host解析 # cat << ...