牛客网 提高组第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 ...
随机推荐
- How To Install Apache Tomcat 7 on CentOS 7 via Yum
摘自:https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-centos-7-via-y ...
- 初学Direct X(8) ——碰撞检测
初学Direct X(8) --碰撞检测 真正让一个游戏鹤立鸡群的是程序对碰撞的响应有多好,这里介绍两种检测的方法: 1) 基于边框的碰撞检测 2) 基于距离的碰撞检测 1. 基于边框的碰撞检测 1. ...
- OIDC in Angular 6
参照 草根专栏- ASP.NET Core + Ng6 实战:https://v.qq.com/x/page/i07702h18nz.html 1. OIDC-Client https://githu ...
- Java学习笔记-12.传递和返回对象
1.Clone()方法产生一个object,使用方法后必须产生的object赋值. Vector v2 = (Vector)v.clone(); 2.Clone()方法在object中是保护类型方法, ...
- sqlserver 2008 merger语句
Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根据与源 ...
- 欢迎来怼——第14次Scrum会议(10/26)
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/26 17:00~17:13(总计13min).地点:计 ...
- P4编程环境搭建
本文参照了sdnlab上相关文章的搭建推荐. 使用的系统环境为ubuntu 18.04 组件介绍 主要安装五个组件: BMv2:是一款支持P4编程的软件交换机 p4c:是一款P4的编译器 PI:是P4 ...
- 【IdentityServer4文档】- 贡献
贡献 我们非常乐于接受社区贡献,但您应遵循一些指导原则,以便我们可以很方便的解决这个问题. 如何贡献? 最简单的方法是打开一个问题并开始讨论.然后,我们可以决定如何实现一个特性或一个变更.如果您即将提 ...
- WIN8/8.1/10进入BIOS方法图解
1.首先点击桌面左下角的"开始". 2.然后点击电源. 3.然后按住shift,同时点击"重启".于是进入这个画面: 4.然后点击"疑难解答" ...
- ORA-00933 SQL命令未正确结束 INSERT INTO ... SELECT
最近在修改数据库存储过程时,出现了一个ORA-00933错误, 执行的是 INSERT INTO...SELECT 语句,具体语句如下: INSERT INTO BASP_DX.QLR@GT(BDCD ...