Count Color

2023-11-09


http://poj.org/problem?id=2777

Description

Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds of problems. Here, we get a new problem.

There is a very long board with length L centimeter, L is a positive integer, so we can evenly divide the board into L segments, and they are labeled by 1, 2, ... L from left to right, each is 1 centimeter long. Now we have to color the board - one segment with only one color. We can do following two operations on the board:

1. "C A B C" Color the board from segment A to segment B with color C.
2. "P A B" Output the number of different colors painted between segment A and segment B (including).

In our daily life, we have very few words to describe a color (red, green, blue, yellow…), so you may assume that the total number of different colors T is very small. To make it simple, we express the names of colors as color 1, color 2, ... color T. At the beginning, the board was painted in color 1. Now the rest of problem is left to your.

Input

First line of input contains L (1 <= L <= 100000), T (1 <= T <= 30) and O (1 <= O <= 100000). Here O denotes the number of operations. Following O lines, each contains "C A B C" or "P A B" (here A, B, C are integers, and A may be larger than B) as an operation defined previously.

Output

Ouput results of the output operation in order, each line contains a number.

Sample Input

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

Sample Output

2
1
#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%



#include<stdio.h>
#include<string.h>
#define  NN 100008
int color[35];
struct node
{
	int l,r,cor;
}g[NN*4];
void build_tree(int l,int r,int h)
{
	g[h].l=l,g[h].r=r;g[h].cor=1;//初始化为1;
	if(l==r)return;
	int mid=(l+r)/2;
	build_tree(l,mid,h+h);
	build_tree(mid+1,r,h+h+1);
}
void update(int l,int r,int h,int add)
{
	if(add==g[h].cor)//当颜色相同时返回;
	return;
	if(l==g[h].l&&r==g[h].r)
	{
		g[h].cor=add;//直接覆盖;
		return;
	}
	if(g[h].cor>0)
	{
		g[h+h].cor=g[h+h+1].cor=g[h].cor;
		g[h].cor=-1;
	}
	int mid=(g[h].l+g[h].r)/2;
	if(r<=mid)
	update(l,r,h+h,add);
	else if(l>mid)
	update(l,r,h+h+1,add);
	else
	{
		update(l,mid,h+h,add);
		update(mid+1,r,h+h+1,add);
	}	
}
void quire(int l,int r,int h)
{
	if(g[h].cor>0)
	{
		color[g[h].cor]=1;
		return;
	}
	/*if(g[h].cor>0)
	{
		g[h+h].cor=g[h+h+1].cor=g[h].cor;
		g[h].cor=-1;
	}*/
	int mid=(g[h].l+g[h].r)/2;
	if(r<=mid)
	quire(l,r,h+h);
	else if(l>mid)
	quire(l,r,h+h+1);
	else
	{
		quire(l,mid,h+h);
		quire(mid+1,r,h+h+1);
	}
}
int main()
{
	int i,j,k,m,n,aa,bb,cc;
	char ss[20];
	while(scanf("%d%d%d",&m,&n,&k)!=EOF)
	{
		build_tree(1,m,1);
		while(k--)
		{
			scanf("%s",ss);
			if(ss[0]=='P')
			{
				scanf("%d%d",&aa,&bb);
				if(aa>bb)
				aa^=bb^=aa^=bb;
				memset(color,0,sizeof(color));
				quire(aa,bb,1);
				int sum=0;
				for(i=0;i<31;i++)
				{
					if(color[i])
					sum++;
				}
				printf("%d\n",sum);
			}
			else
			{
				scanf("%d%d%d",&aa,&bb,&cc);
				if(aa>bb)
				aa^=bb^=aa^=bb;
				update(aa,bb,1,cc);
			}
		}
	}
	return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Count Color 的相关文章

  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • Python Pandas 按列对多索引进行排序,但保留树结构

    使用 pandas 0 20 3 我尝试按列 D 对数据帧的 n 个多级进行排序 其中的值 降序 以便维护组的层次结构 输入示例 D A B C Gran1 Par1 Child1 3 Child2 7 Child3 2 Par2 Chil
  • 根据值更改 DataGrid 单元格颜色

    我有一个 WPF 数据网格 我想要根据值使用不同的单元格颜色 我的 xaml 上有以下代码 Style TargetType DataGridCell 但不是只选择一个单元格而是选择所有行 我缺少什么 如果您尝试设置DataGrid Cel
  • 如何在 Docker 多阶段构建层中缓存 Maven 依赖项和插件?

    我想将 Maven 依赖项缓存在我的构建阶段的一层中Docker 多阶段构建 https docs docker com engine userguide eng image multistage build 我的 Dockerfile 如
  • 如何在 SQL 中进行广度优先搜索?

    给定一棵存储为关系的树 Parent Child 1 2 1 3 3 4 3 5 2 6 7 8 7 9 如何获取给定节点的所有后代 例如 对于 1
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • 使用 jar 依赖项构建 Android 库项目

    我已经被一个问题困扰了几天 但我不知道如何解决这个问题 我正在处理一个 Android 库项目 该项目正在使用 android sdk 提供的 Android 工具进行编译 在项目内部 我遵循 Android 项目的标准结构 我的 jar
  • 使用模块编译 TypeScript 并捆绑到一个文件

    当使用module inside tsconfig jsonTypeScript 编译器将忽略任何 out标记并生成常规输出 例如commonjs模块在单独的文件中 有没有办法将所有转译文件捆绑到一个文件中 我目前正在尝试使用 webpac
  • 在c#中遍历对象树

    我有一棵由多个对象组成的树 其中每个对象都有一个名称 string id int 以及可能是同一类型的子数组 如何遍历整个树并打印出所有 id 和名称 我是编程新手 坦率地说 我很难理解这个问题 因为我不知道有多少个级别 现在我正在使用fo
  • 未找到 Gradle DSL 方法:“versionCode()”

    构建我的 Android 项目时遇到问题 我使用Grgit https github com ajoberstar grgit填写versionCode and versionName在 gradle 中 一切工作正常 直到我将 Andro
  • 设置 jdialog 框中文本的格式

    我有一个 JOptionPane JOptionPane showMessageDialog null text 文字是一个刺 String text Hello world 我想做的是改变文本的颜色 特别是一个单词 让我们说 你好 所以我
  • 如何在 MultiJob 插件中传递内部版本号?

    The 多作业插件 https wiki jenkins ci org display JENKINS Multijob Plugin很棒 我想将它用于我的构建过程 但之前有一个问题必须解决 有三个作业 A B 和 C SVN 触发作业 A
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • .NET - 将颜色名称字符串转换为 System.Drawing.Color

    将 red green yellow aliceblue 等字符串转换为实际的 System Drawing Color 值的最佳方法是什么 我正在查看反思 发现有些事情似乎不对劲 您可以使用 Color FromName
  • 如何从邻接列表构建嵌套树结构?

    考虑到我有 名为的相邻键 子级 父级 列表A 一个名为Tree存储自己的节点键 整数 和子节点 类 A 61 66 50 61 68 61 33 61 57 66 72 66 37 68 71 33 6 50 11 37 5 37 clas
  • 使用 getRGB() 时负数的含义是什么?

    我对颜色 渲染等很陌生 并且观看了一些有关渲染等的教程视频 我的问题是 当我致电getRGB像素上的方法 它返回一个负整数 这个负数是什么意思 例如 当我打电话时getRGB对于 r 186 g 186 b 186 的颜色 它返回 4539
  • Webpack:如何使用动态捆绑组合两个完全独立的捆绑包

    我花了很多时间研究这个问题 但毫无结果 我知道代码分割和动态捆绑在 Webpack 中如何使用import承诺API 然而 我的用例是我有两个完全独立的包 使用不同的 webpack 版本分别生成 为了给您提供视角 我正在构建 React
  • VS Code:无法安装以下 Android SDK 包,因为某些许可证尚未被接受

    我想做的是使用 VS Code 构建我的 flutter 应用程序 当我运行以下命令时flutter build apk FAILURE Build failed with an exception Where Build file F y
  • 关于树和前缀(波兰语)表示法?

    我的 MIPS Assembly 类要求我将未知大小的表达式读入解析树 我从来没有处理过树 所以这就是我存储值的方式 假设用户输入了表达式 1 3 4 每个操作数只能是数字 1 9 我最左边的子节点将是起点并包含 2 条数据 1 The o
  • 如何使用PIL将灰度图转为伪彩色?

    我似乎不知道如何获取我的灰度函数并将其更改为给我假颜色 我知道我需要将每种颜色 R G B 分成范围 然后根据每种颜色的范围分配颜色 有谁知道这是如何运作的 def grayscale pic width height pic size f

随机推荐

  • Linux的发展历史及版本简介

    Linux发展历史及常用版本介绍 由于最近一段时间的学习要基于Linux操作系统 之前在各个版本的Linux之间看的眼花缭乱 那么经过自己查阅和总结之后 对Linux的发展历史和现在目前比较流行的Linux版本的特点有了一些大致的了解 在这
  • case when的几种用法

    用法一 case 字段 when select case c sex when 1 then 男 else 女 end as 性别 count as 人数 from user inofr group by 性别 用法二 case when
  • AndroidStudio 卡在下载gradle,官网下载gradle压缩包太慢了解决办法

    解决办法 一 打开下面网站 https services gradle org distributions 二 右键检查或者F12 找到你需要的版本的下载地址复制 如下图 最终地址格式 https services gradle org d
  • MySQL中length函数(刷SQL题时学到的)

    查找字符串中逗号出现的次数 牛客题霸 牛客网 3 查询某个字符出现几次 length str1 length replace str1 str2
  • EditText输入内容拦截和监听删除

    系列文章目录 文章目录 系列文章目录 前言 拦截输入内容提交 监听软件盘删除按钮点击事件 监听输入框文字粘贴 复制 全选等 code 前言 有时候我们会有一些特殊的需求 需要对输入框进行特殊的处理 比如 对输入内容去除特殊字符操作 或拦截输
  • statsmodels.tsa.stattools.adfuller 的用法

    statsmodels tsa stattools adfuller x maxlag None regression c autolag AIC store False regresults False source 增广Dickey F
  • Linux下vi命令编辑器,编辑 ,保存和退出

    1 vi 文件名 vi后面有空格 接着按回车即可打开对应的文件 如果没有对应的文件 那么vi命令就会自动创建一个新的 2 vi打开文件后是命令模式状态 要用i或者a命令或Insert键才可进入可编辑的状态 最下面会出现 INSERT 3 保
  • python 列表操作方法详解及例子

    原文链接 https www cnblogs com wj 1314 p 8433116 html 列表是Python中最基本的数据结构 列表是最常用的Python数据类型 列表是一个数据的集合 集合内可以放任何数据类型 可对集合方便的增删
  • 云服务器安装操作系统后如何连接,服务器如何安装操作系统

    服务器如何安装操作系统 内容精选 换一换 如果您需要使用毕昇编译器 则需要先在服务端安装毕昇编译器 毕昇编译器基于开源LLVM开发 并进行了优化和改进 同时将flang作为默认的Fortran语言前端编译器 是针对鲲鹏平台的高性能编译器 当
  • 华为OD机考-模拟消息队列(C,python)

    题目描述 让我们来模拟一个消息队列的运作 有一个发布者和若干消费者 发布者会在给定的时刻向消息队列发送消息 若此时消息队列有消费者订阅 这个消息会被发送到订阅的消费者中优先级最高 输入中消费者按优先级升序排列 的一个 若此时没有订阅的消费者
  • urldecode 报错 Malformed UTF-8 characters, possibly incorrectly encoded

    使用urlencode 编码了一段字符串写入数据库 读取的时候使用urldecode 解码报错 Malformed UTF 8 characters possibly incorrectly encoded 解决方案 检查一下是否保存到数据
  • ajax不弹出新页面问题

    ajax默认是异步请求 做局部刷新的 指的是当前页数据渲染的 如果后台是转发或者重定向了 如果用ajax的话是不会弹出新的页面的 from提交的话 如果后台是转发或者重定向了 是可以打开新的页面的
  • 【人脸识别】【python】Object arrays cannot be loaded when allow_pickle=False解决方案

    2020年2月11日 0次阅读 共1625个字 0条评论 0人点赞 QueenDekimZ mtcnn debug 用mtcnn对LFW人脸数据集进行人脸检测与关键点对齐 并裁剪到160 160维 为后续facenet训练作training
  • wx.login wx.getUserProfile 获取登录凭证

    wx login 调用接口获取登录凭证 code 通过凭证进而换取用户登录态信息 包括用户在当前小程序的唯一标识 openid 微信开放平台帐号下的唯一标识 unionid 若当前小程序已绑定到微信开放平台帐号 及本次登录的会话密钥 ses
  • 通过hexo快速搭建个人博客

    个人博客预览点击这里 菜卷的博客 快速搭建一个博客 一 需要安装的工具 二 开始安装Hexo 三 安装完成后 初始化项目 四 在项目根目录下执行命令 五 启动项目 六 部署到github 七 配置文件 八 安装next主题 九 优化next
  • C语言程序实训--实验设备管理系统

    之前学校c语言程序实训课要求写的 如果程序有错误或可以改进的地方 希望各位指出 开发环境 IDE Visual Studio Code Dev C 处理器 AMD Ryzen 7 PRO 6850HS with Radeon Graphic
  • 73家!华为鸿蒙OS合作伙伴汇总

    6月2日 华为发布了最新版的鸿蒙操作系统 HarmonyOS 2 0 以及一系列搭载鸿蒙的硬件产品 比如手机 手表 平板 耳机 显示器等等 如今的智能终端越来越多 厂商不可能为每个设备单独准备一个系统 因为这不仅让开发者工作量倍增 消费者用
  • Flask网站中使用Keras时报错“Tensor Tensor(*) is not an element of this graph”

    HyperLPR车牌识别程序本地中能进行正常识别 但将其放到flask搭建的网站中进行识别 不能运行 并报错 Tensor Tensor is not an element of this graph HyperLPR中的识别模型采用的是K
  • Mask掩码

    Python中Mask的用法 引例 Numpy的MaskedArray模块 小于 或小于等于 给定数值 大于 或大于等于 给定数值 在给定范围内 超出给定范围 在算术运算期间忽略NaN和 或infinite值 All men are scu
  • Count Color

    http poj org problem id 2777 Description Chosen Problem Solving and Program design as an optional course you are require