传送门:洛谷 P1558 色板游戏
算法分析:观察到数据范围:\(1\leq T\leq 30\) ,考虑使用二进制来进行状态压缩
将颜色\(x\)表示为 \(1<<(x-1)\) 即 \(2^{x-1}\),使用线段树动态维护即可


#include<iostream>
#include<cstdio>
#define maxN 100010
#define ls k<<1
#define rs k<<1 | 1
#define mid ((l+r)>>1)
using namespace std;
typedef long long ll;
ll sum[maxN*4+1],v[maxN*4+1];
int n,m,x,y,z,T;
char op[3];
void pushdown(int,int,int),pushup(int);
ll query(int,int,int,int,int);
void update(int,int,int,int,int,int);
void print(ll);
void build(int,int,int);
int main()
{scanf("%d%d%d",&n,&T,&m);build(1,1,n);for(int i=1;i<=m;i++){scanf("%s%d%d",op,&x,&y);if(op[0]=='C'){scanf("%d",&z);update(1,1,n,min(x,y),max(x,y),1<<(z-1));}else print(query(1,1,n,min(x,y),max(x,y)));}return 0;
}
void build(int k,int l,int r)
{if(l==r) {sum[k]=1; return;}build(ls,l,mid); build(rs,mid+1,r);pushup(k);
}
void print(ll x)
{int sum=0;while(x) {sum+=(x&1); x>>=1;}printf("%d\n",sum);
}
void pushup(int k) {sum[k]=sum[ls]|sum[rs];}
void pushdown(int k,int l,int r)
{v[ls]=v[rs]=sum[ls]=sum[rs]=v[k];v[k]=0;
}
void update(int k,int l,int r,int ql,int qr,int u)
{if(ql<=l && r<=qr){sum[k]=u;v[k]=u; return;}if(v[k]) pushdown(k,l,r);if(ql<=mid) update(ls,l,mid,ql,qr,u);if(qr>mid) update(rs,mid+1,r,ql,qr,u);pushup(k);
}
long long query(int k,int l,int r,int ql,int qr)
{if(ql<=l && r<=qr) return sum[k];long long ans=0;if(v[k]) pushdown(k,l,r);if(ql<=mid) ans|=query(ls,l,mid,ql,qr);if(qr>mid) ans|=query(rs,mid+1,r,ql,qr);return ans;
}

转载于:https://www.cnblogs.com/ezsyshx/p/10359323.html

洛谷 P1558 色板游戏相关推荐

  1. 洛谷P1558 色板游戏

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

  2. 洛谷 P2197 nim游戏

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

  3. 洛谷 P1129 矩阵游戏

    洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...

  4. 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)

    洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...

  5. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  6. 洛谷——P1000 超级玛丽游戏

    P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 另外强烈推荐新用户必读贴 题目描述 超级玛丽是一个非常经典的游戏. ...

  7. 洛谷P1000 超级玛丽游戏C++题解

    首先我们看这道题的题目"超级玛丽游戏",第一道题就让我们写个游戏出来.结果点进去一看,顿时觉得这道题是在开玩笑,本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续 ...

  8. 洛谷 P4815 狼人游戏 题解

    洛谷 P4815 [CCO2014] 狼人游戏 首先题目中有 3 3 3 个限制: 没有机器人又被指控又被保护: 没有机器人被指控或保护一次以上: 如果有一个编号为 A A A 机器人指控或保护编号为 ...

  9. 【模拟】洛谷 P1000 超级玛丽游戏

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

最新文章

  1. angularjs 访问后台的时候,明明路径没有问题,却报404 解决
  2. 网络推广平台详细的介绍为什么要重视内容优化?
  3. 封装、继承和构造函数
  4. 爬取小说1--高并发
  5. 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?
  6. linux数据库实例开机启动,linux下数据库实例开机自启动设置
  7. 简单几招优化你的Go程序
  8. android Mvp简单实用
  9. 关于premake4
  10. android点击另一个app,Android 怎么从一个APP中打开另外一个APP
  11. 屏蔽爬虫之robots.txt
  12. C语言编程题如何提交源程序,c语言课后习题源程序.doc
  13. java web 发送短信_java程序或javaweb(网站)向手机发送短信
  14. w ndows键盘哪个键,B.O.W航世的蓝牙键盘的BackSpace键失灵怎么办?Windows修改键盘映射帮到你。...
  15. 平头哥CH2601开发环境(CDK)搭建
  16. java 生成格林威治时间
  17. 红蓝出屏3D图片,请使用红蓝眼镜观看
  18. 微信小程序: 开发文档
  19. mac系统恢复服务器上的安装器损坏,Mac提示App已损坏你应该将它移到废纸篓的解决方案-mac无法安装软件解决教程 - 河东软件园...
  20. 说说某音d赞zhang粉那点事

热门文章

  1. iphone模拟器_应用日报 | Xcode 现身 5.4 英寸 iPhone 模拟器,和平精英上线特斯拉皮肤...
  2. 华为nova2s云相册在哪里_华为反人类的用户体验
  3. linux shell 获取用户名,shell脚本输出/etc/passwd中shell类型对应的用户名及其个数
  4. 苏州netapp存储服务器维修,NetApp存储日常维护手册 v12.doc
  5. php json 特殊字符,PHP转义Json里的特殊字符的函数
  6. centos7 怎么封装自己的镜像_在Centos7系统上制作一个7系的Docker镜像
  7. LintCode:尾部的零
  8. KinectFusion: Real-Time Dense Surface Mapping and Tracking
  9. 卷积神经网络的重要知识点
  10. html5盒子层级设置,解决CSS中子元素z-index与父元素兄弟节点的层级问题