牛客网 提高组第8周 T1 染色
染色
链接:
https://ac.nowcoder.com/acm/contest/176/A
来源:牛客网
题目描述
\(\tt{fizzydavid}\)和\(\tt{leo}\)有\(n\)个方格排成一排,每个方格初始是白色。\(\tt{fizzydavid}\)有红色染料,\(\tt{leo}\)有蓝色染料。他们共进行了\(m\)次操作,在每次操作中,\(\tt{fizzydavid}\)或者\(\tt{leo}\)会选择若干个(可以是零个)连续相邻的方格并用自己的染料给这些格子染色。当一个格子被染成某个颜色时,这种染料会覆盖之前这个格子上的颜色。
现在你并不知道他们每次操作选择了哪些格子,只知道每次操作是谁进行的,以及最终这 \(n\)个方格的颜色。你需要判断是否存在某种选择格子的方式使得操作完之后\(n\)个方格的颜色与给定的相同。你还发现,\(n\)个格子最终都不是白色。
输入描述:
第一行包含一个整数\(T\),表示本组数据共有\(T\)组测试点。
对每组测试点的第一行是一个由\(R\)和\(B\)组成的字符串\(s\)表示最终格子的颜色。\(R\)表示红色,\(B\)表示蓝色,同时字符串的长度为\(n\)。
第二行是一个由\(F\)和\(L\)组成的字符串\(t\)表示\(m\)次操作,\(F\)表示某次是\(\tt{fizzydavid}\)操作,\(L\)表示是\(\tt{leo}\)操作,同时字符串的长度为\(m\)。
输出描述:
对每组测试点输出一行,如果满足条件输出\(\tt{Yes}\)否则输出\(\tt{No}\)。
说明
所有数据满足\(T\le 20\)。
\(50\%\)的数据满足\(n,m\le 15\)
\(80\%\)的数据满足\(n,m\le 100\)
\(100\%\)的数据满足\(n,m\le 100000\)
恩,啥也没想到,一开始就没想到要倒着做。
考虑倒着操作,那么颜色是不会覆盖原来的颜色的。那么每个格子显然只会最开始被染上一次颜色,且这个颜色必须是要求的颜色。
很自然的把连续的颜色区间缩成一个点,那么序列会变成形如\(RBRBRB\)这样子的。
很自然的贪心先从中间染色,这样就可以把这个点两边的区间合成一个。特判一下两边就可以了。
Code:
#include <cstdio>
#include <cstring>
const int N=1e5+10;
int n,m,T;
char op[N],s[N];
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s%s",s+1,op+1);
n=strlen(s+1),m=strlen(op+1);
int las=s[1]=='R',re=0,bl=0;
for(int i=2;i<=n;i++)
if(las!=(s[i]=='R'))
re=re+las,bl=bl+(!las),las=(s[i]=='R');
re=re+las,bl=bl+(!las);
for(int i=m;i;i--)
{
if(op[i]=='F')//染红
{
--re;
if(bl>=2) --bl;
}
else
{
--bl;
if(re>=2) --re;
}
}
if(re<=0&&bl<=0) puts("Yes");
else puts("No");
}
return 0;
}
2018.11.4
牛客网 提高组第8周 T1 染色的更多相关文章
- 牛客网 提高组第8周 T2 推箱子 解题报告
推箱子 链接: https://ac.nowcoder.com/acm/contest/176/B 来源:牛客网 题目描述 在平面上有\(n\)个箱子,每个箱子都可以看成一个矩形,两条边都和坐标轴平行 ...
- 18/9/16牛客网提高组Day2
牛客网提高组Day2 T1 方差 第一眼看就知道要打暴力啊,然而并没有想到去化简式子... 可能因为昨晚没睡好,今天上午困死 导致暴力打了一个半小时,还不对... #include <algor ...
- 18/9/9牛客网提高组Day1
牛客网提高组Day1 T1 中位数 这好像是主席树??听说过,不会啊... 最后只打了个暴力,可能是n2logn? 只过了前30% qwq #include<algorithm> #in ...
- nowcoder(牛客网)提高组模拟赛第四场 解题报告
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是
- 牛客网提高组模拟赛第七场 T3 洞穴(附bitset介绍)
就是DP. 我们可以很简单的想到要枚举中间点,进行边数的转移. 但是因为边长数据范围很大,所以我们考虑log的倍增. 状态设计为\(dp[i][j][k]\),为从节点\(i\)走\(2^k\)步能否 ...
- 牛客网提高组模拟赛第七场 T2 随机生成树
其实看懂题就很水啦qwq,就是求\(1-N\)的约数啦. 暴力求的话时间复杂度是\(O(NlogN)\)的,其实正解是枚举每个数的倍数......这样的时间复杂度是\(\frac{N}{1}+\fra ...
- 牛客网提高组模拟赛第五场 T1同余方程(异或)(位运算)
区间不好做,但是我们可以转化成前缀来做.转化为前缀之后之后就是二维前缀和. 但是我还是不怎么会做.所以只能去看吉老师的题解 (确定写的那么简单真的是题解???). 我们要求模一个数余0,就等于找它的倍 ...
- nowcoder(牛客网)提高组模拟赛第一场 解题报告
T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...
- 牛客网提高组第二场---solution
T1 方差 根据题目要求将式子先写出来注意下面式子中的 $n$ 全部都是 $n-1$$$\begin{aligned}ans&=n^2\times \frac{1}{n}\times \sum ...
随机推荐
- hdu1730Northcott Game(nim博弈)
Northcott Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- Python :编写条件分支代码的技巧
『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也有 ...
- ISE 14.7安装教程最新版(Win10安装)——解决Win10安装完后打不开快捷方式的方法
ISE 14.7安装教程最新版(Win10安装) Xilinx ISE是一款世界著名的硬件设计软件,它为设计流程的每一步都提供了直观的生产力增强工具,覆盖从系统级设计探索.软件开发和基于HDL硬件设计 ...
- tpo-09 C2 Return a sociology book
check out 在library里有借书的意思 第 1 段 1.Listen to a conversation between a student and a librarian employe ...
- Laxcus大数据管理系统2.0(7)- 第五章 数据构建
第五章 数据构建 在数据处理过程,我们经常会遇到这样的情况:大多数时候,用户最初输入的数据会含有大量无意义的.杂乱的信息,需要经过提炼.收集.汇总等一系列手段,才能产生有意义和用户可识别的数据内容:当 ...
- 软件工程-东北师大站-第二次作业psp
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 本周PSP饼状图
- how to install pygraphviz on windows 10 with python 3.6
Here's what worked for me: Win 7 AMD64 Install MSFT C++ compiler. Install Anaconda for Win AMD64, Py ...
- mysqlslap工具测试mysql DB的性能
mysqlslap的一个主要工作场景就是对数据库服务器做基准测试. 测试方法 1.测试工具:mysqlslap,mysqlslap是MySQL5.1.4之后自带的benchmark基准测试工具 ...
- GetTickCount 和getTickCount
GetTickCount:正常读取时间函数 getTickCount:不知道是什么鬼东东函数 都包含在windows.h中..运行出的结果天壤之别~~~
- matlab中滤波函数
matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...