洛谷

题解里面好像都是压位什么的,

身为蒟蒻的我真的不会,

所以就来谈谈我的30颗线段树蠢方法吧!

这题初看没有头绪。

然后发现颜色范围好像只有30;

所以,我就想到一种\(sao\)操作,搞30颗线段树。

每颗线段树代表一种颜色。

那么对于题中的两种操作:

1.修改。我们for循环扫一遍所有颜色,把其他颜色的线段树l->r修改成0,要修

改的颜色所对应的线段树改成1。

2.询问。也是for循环,如果\(l->r\)这个区间的第k种颜色所对应的线段树有值,则\(ans++\)。

时间复杂度也很低,大概是\((MLlog(L)*T)\),真正的\(O(\)卡时\()\).

献上代码:

#include <bits/stdc++.h>
#define ll(x) ((x)<<1)
#define rr(x) ((x)<<1|1)
using namespace std; const int T=31,N=100010;
int n,t,m;
int laz[T][N<<2],sum[T][N<<2]; void pushup(int i,int x)
{
sum[i][x]=sum[i][ll(x)]+sum[i][rr(x)];
} void build(int i,int x,int l,int r)
{
if (l==r) {
sum[i][x]=1;
return;
}
int mid=l+r>>1;
build(i,ll(x),l,mid);
build(i,rr(x),mid+1,r);
pushup(i,x);
} void pushdown(int i,int x)
{
if (laz[i][x]==-1) {
sum[i][ll(x)]=sum[i][rr(x)]=0;
laz[i][ll(x)]=laz[i][rr(x)]=-1;
}
else {
sum[i][ll(x)]=sum[i][rr(x)]=laz[i][x];
laz[i][ll(x)]=laz[i][rr(x)]=laz[i][x];
}
laz[i][x]=0;
} void change(int i,int x,int l,int r,int ls,int rs,int v)
{
if (l>rs||r<ls) return;
if (l>=ls&&r<=rs) {
sum[i][x]=v;
if (!v) laz[i][x]=-1;
else laz[i][x]=v;
return;
}
if (laz[i][x]) pushdown(i,x);
int mid=l+r>>1;
if (ls<=mid) change(i,ll(x),l,mid,ls,rs,v);
if (rs>mid) change(i,rr(x),mid+1,r,ls,rs,v);
pushup(i,x);
} int ask(int i,int x,int l,int r,int ls,int rs)
{
if (l>rs||r<ls) return 0;
if (l>=ls&&r<=rs) return sum[i][x];
if (laz[i][x]) pushdown(i,x);
int mid=l+r>>1;
return ask(i,ll(x),l,mid,ls,rs)+ask(i,rr(x),mid+1,r,ls,rs);
} int main()
{
cin>>n>>t>>m;
build(1,1,1,n);
char s[3];int l,r,v;
for (int i=1;i<=m;++i) {
scanf("%s%d%d",s,&l,&r);
if (l>r) swap(l,r);
if (s[0]=='C') {
scanf("%d",&v);
for (int k=1;k<=t;++k)
if (k!=v)
change(k,1,1,n,l,r,0);
else change(k,1,1,n,l,r,1);
}
else {
int ans=0;
for (int k=1;k<=t;++k)
if (ask(k,1,1,n,l,r))
++ans;
printf("%d\n",ans);
}
}
return 0;
}

洛谷 P1558 色板游戏的更多相关文章

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

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

  2. 洛谷P1558 色板游戏

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

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

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

  4. P1558 色板游戏

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

  5. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...

  6. 洛谷 P1965 转圈游戏

    洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...

  7. AC日记——色板游戏 洛谷 P1558

    色板游戏 思路: sb题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct Tre ...

  8. 洛谷 P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...

  9. 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山

    前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...

随机推荐

  1. 转: javascript技术栈

    http://www.infoq.com/cn/articles/state-of-javascript-2016

  2. Intellij output 中文乱码

    使用intellij有一段时间了,intellij output中文乱码,每次使用这两点解决,就可以解决乱码问题. 1.修改启动参数 修改安装Intellij目录下的C:\Program Files ...

  3. Oracle基础 索引

    一.索引 索引是一种快速访问数据的途径,可提高数据库性能.索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据,就像书的目录,可以快速查找所需的信息,无须阅读整本书. (一)索引的分类 逻 ...

  4. 关于Laravel5.2在php5.3.6X和在php7.1.10下的内存溢出

    php5.3.6X是编译安装,在debug模式下,频繁报出内存泄露警告 php7.1.10下则不会有此错误. 顺便提下:测试发现ThinkPHP也不会有该内存泄露警告! 希望知道如何解决该问题的童鞋能 ...

  5. 【转载】 json字符串与JSON对象

    ajax中,我们自己拼接的是一个JSON对象,以为它是无数据类型的,所以JS根据其格式默认其实对象, 你要是往后台发,要先把它装换成JSON字符. 从ajax的服务器发过的,一定是字符串,你想要把它解 ...

  6. LeetCode题目:Permutations

    题目:Given a collection of distinct numbers, return all possible permutations. 大意:全排列给定数组,其中给定数组中没有相同的 ...

  7. 关于 Nginx 并发连接数

    关于 Nginx 并发连接数 最近在学习使用 nginx , 做一些简单的压力测试时,发现并发连接数最大只能上到 100 多 测试刚开始时的状态 , netstat -n | awk '/^tcp/ ...

  8. 打造Android万能上拉下拉刷新框架--XRefreshView(三)

    转载请注明出处:http://blog.csdn.net/footballclub/ 打造Android万能上拉下拉刷新框架–XRefreshView(一) 打造Android万能上拉下拉刷新框架–X ...

  9. 压力测试工具集合(ab,webbench,Siege,http_load,Web Application Stress)

    压力测试工具集合(ab,webbench,Siege,http_load,Web Application Stress) 1 Apache附带的工具ab ab的全称是ApacheBench,是Apac ...

  10. java数字签名算法之RSA

    © 版权声明:本文为博主原创文章,转载请注明出处 实例 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4.0 ...