题目背景

阿宝上学了,今天老师拿来了一块很长的涂色板。

题目描述

色板长度为L,L是一个正整数,所以我们可以均匀地将它划分成L块1厘米长的小方格。并从左到右标记为1, 2, ... L。现在色板上只有一个颜色,老师告诉阿宝在色板上只能做两件事:1. "C A B C" 指在A到 B 号方格中涂上颜色 C。2. "P A B" 指老师的提问:A到 B号方格中有几种颜色。学校的颜料盒中一共有 T 种颜料。为简便起见,我们把他们标记为 1, 2, ... T. 开始时色板上原有的颜色就为1号色。 面对如此复杂的问题,阿宝向你求助,你能帮助他吗?

输入输出格式

输入格式:

第一行有3个整数 L (1 <= L <= 100000), T (1 <= T <= 30) 和 O (1 <= O <= 100000). 在这里O表示事件数, 接下来 O 行, 每行以 "C A B C" 或 "P A B" 得形式表示所要做的事情(这里 A, B, C 为整数, 可能A> B)

输出格式:

对于老师的提问,做出相应的回答。每行一个整数。

输入输出样例

输入样例#1:

2 2 4
C 1 1 2
P 1 2
C 2 2 2
P 1 2

输出样例#1:

2
1

/*可以选择状态压缩,把30种颜色装换成二进制,这样单点修改就行了;也可以用vis数组维护,这样要区间修改,每次查询更新vis数组,lz用第二种方法做的。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define lson l,mid,now*2
#define rson mid+1,r,now*2+1
#define M 100010
#define N 32
using namespace std;
int sum[M*4],tag[M*4],vis[N],n,t,m;
void push_up(int now)
{if(sum[now*2]==sum[now*2+1])sum[now]=sum[now*2];else sum[now]=-1;
}
void push_down(int now)
{if(!tag[now])return;tag[now*2]=tag[now];sum[now*2]=tag[now];tag[now*2+1]=tag[now];sum[now*2+1]=tag[now];tag[now]=0;
}
void change(int x,int y,int v,int l,int r,int now)
{if(l>=x&&r<=y){sum[now]=tag[now]=v;return;}push_down(now);int mid=(l+r)/2;if(x<=mid)change(x,y,v,lson);if(y>mid)change(x,y,v,rson);push_up(now);
}
void query(int x,int y,int l,int r,int now)
{if(l>=x&&r<=y&&sum[now]!=-1){vis[sum[now]]=1;return;}push_down(now);int mid=(l+r)/2;if(x<=mid)query(x,y,lson);if(y>mid)query(x,y,rson);
}
int main()
{scanf("%d%d%d",&n,&t,&m);for(int i=1;i<=n;i++)change(i,i,1,1,n,1);for(int i=1;i<=m;i++){char c;cin>>c;if(c=='C'){int x,y,v;scanf("%d%d%d",&x,&y,&v);if(x>y)swap(x,y);change(x,y,v,1,n,1);}else{memset(vis,0,sizeof(vis));int x,y,tot=0;scanf("%d%d",&x,&y);if(x>y)swap(x,y);query(x,y,1,n,1);for(int i=1;i<=t;i++)if(vis[i])tot++;printf("%d\n",tot);}}return 0;
} 

View Code

转载于:https://www.cnblogs.com/harden/p/5862460.html

色板游戏(洛谷 1558)相关推荐

  1. 广度优先搜索——好奇怪的游戏(洛谷 P1747)

    题目选自洛谷P1747 简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1) 每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~ 需要注意的是,马走日和像走田的位置计算 i ...

  2. 模拟——扫雷游戏(洛谷 P2670)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P2670 也是一道简单模拟的题,没有必要列举出8个if语句逐一判断8个方向, 只需要用一个二维数组来保存8个方向即可. 需要注 ...

  3. AC日记——欧几里得的游戏 洛谷 P1290

    题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数 ...

  4. 2019年东莞特长生 游戏(洛谷 P2661 信息传递)

    Description 某校科技节到了,有? 个同学(编号为1到?)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为? 的同学的信息传递对象是编号为??的同学. 游戏开始 ...

  5. 洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)

    洛谷:矩阵游戏 洛谷题解就挺好 目的是使得最终(1,1)(2,2)-(n,n)都有一个点 可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配 建图方式:对于 i 行 j 列的1点,建一条 i ...

  6. 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    洛谷P4042[AHOI2014/JSOI2014]骑士游戏\color{#00F}{洛谷\ P4042\ [AHOI2014/JSOI2014]骑士游戏}洛谷 P4042 [AHOI2014/JSO ...

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

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

  8. 洛谷解题P1000 超级玛丽游戏(C++)

    此文章关于洛谷P1000 超级玛丽游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1000题目的解析: 先看题 ...

  9. 洛谷:P1129 [ZJOI2007] 矩阵游戏

    题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...

  10. 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储

    P1428 小鱼比可爱 小鱼比可爱 - 洛谷 P1427 小鱼的数字游戏 小鱼的数字游戏 - 洛谷 P5727 [深基5.例3]冰雹猜想 [深基5.例3]冰雹猜想 - 洛谷 P5727 [深基5.例3 ...

最新文章

  1. 总结概括对于大数据、高并发的网站如何进行优化的问题
  2. Android 即时通讯开发小结(二)
  3. Single System Image的理解
  4. 一个下载Google code源码的 绿色、迷你工具 MiniSVN v1.0
  5. CentOS下安装Memcached,Linux下安装Memcached,centos下安装memcached,linux下安装memcached...
  6. 自制hdmi线一头改vga图_东莞VGA数据线厂商价格
  7. java证书 查看cacer_R 语言关于 SSL 证书异常处理笔记
  8. 各种门锁的内部结构图_逃生门锁,我们的生命之锁!
  9. 【狂神说Redis】2Redis入门 2-2Redis部署在Linux(Ubuntu)
  10. Java实现将阿拉伯数字转换为中文数字123=》一二三
  11. Center OS和Linux的区别
  12. 【C语言】入门基础选择题附答案
  13. smali 添加资源
  14. pdf照片显示正常打印时被翻转_现场确认完没事了?准考证打印要注意哪些细节!...
  15. 严蔚敏《数据结构》——二叉树
  16. P5656 【模板】二元一次不定方程 (exgcd)(公约数)
  17. 怎么做好备件管理?备件管理系统都包括哪些功能模块?
  18. PS2021 入门使用技巧
  19. sql注入——布尔注入
  20. antd3.x版本table使用fixed错位问题修复

热门文章

  1. c++ c超简单的求公约数
  2. 【Android UI设计与开发】10:滑动菜单栏(二)SlidingMenu 动画效果的实现
  3. 巧用 SSH 打通外网限制
  4. 史上讲解最好的 Docker 教程
  5. 干掉 SQL 中的 like,我用 es 后运营小姐姐们都说好快!
  6. 面试要10K,HR说你只值7K,怎么斗得过?
  7. 注意!你手持身份证拍的照片,可能已经被炒到了上千元
  8. 大城市赚钱,小城市买房
  9. *第十五周*数据结构实践项目一【验证哈希表及其算法】
  10. Java中单例设计模式总结