题解:P10608 双人游戏
题解:P10608 双人游戏
题意
给予你一个长度为 \(n\) 的字符串 \(c\),\(c\) 上有三种颜色的棋子,其中有 \(m\) 个空字符。
接下来有 \(m\) 个操作,每个操作意味小 M 或小 R 将某一个空棋子改成黑或白棋子。
小 R 希望游戏结束后棋子组成的极长同色连续段数尽可能多,而小 M 则希望其尽可能少。
每个人都会按照自己的意愿做最有做法。
求最终的极长同色连续段数。
思路
我们可以先将 \(c\) 的空格子改成改变它的人。
若 \(c_{i}\) 是 \(W\) 或 \(B\),则不用管它。
易得,若 \(c_{i}\) 是 \(R\),则肯定是将它改成与 \(c_{i-1}\) 相反。
易得,若 \(c_{i}\) 是 \(M\),则肯定是将它改成与 \(c_{i-1}\) 相同。
但这么写会遗漏前面一大堆空格子的情况,这样的话,只要从尾到头的重复上述步骤即可。
如果全是空格子,上述步骤是不起作用的,易得当且仅当这种情况下 \(c_{1}\) 的数值是不影响最后结果的,所以可以取任意值。
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,s[200005],x;
string c;
char A;
int main(){
cin>>n>>m>>c;
c=' '+c;
for(int i=1;i<=m;i++){
cin>>A>>x;
if(m==n&&i==1)A='W';
c[x]=A;
}
// cout<<c<<"\n";
for(int i=1;i<=n;i++){
if(c[i]=='R'){
if(c[i-1]=='B')c[i]='W';
else if(c[i-1]=='W')c[i]='B';
}else if(c[i]=='M'){
if(c[i-1]=='B')c[i]='B';
else if(c[i-1]=='W')c[i]='W';
}
//cout<<c<<"\n";
}
for(int i=n;i>=1;i--){
if(c[i]=='R'){
if(c[i+1]=='B')c[i]='W';
else if(c[i+1]=='W')c[i]='B';
}else if(c[i]=='M'){
if(c[i+1]=='B')c[i]='B';
else if(c[i+1]=='W')c[i]='W';
}
//cout<<c<<"\n";
}
// cout<<c<<"\n";
int ans=1;
for(int i=2;i<=n;i++)if(c[i]!=c[i-1])ans++;
cout<<ans;
return 0;
}
题解:P10608 双人游戏的更多相关文章
- 题解——洛谷P2734 游戏A Game 题解(区间DP)
题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- .NET桌面程序混合开发之二:在原生WinFrom程序中使用WebView2
本文将介绍如何在WinForms中嵌入WebView2,并讲到WebView2的主要特征.点击了解更多WebView2的API. 1. 准备 Visual Studio 2017 及以上版本 WebV ...
- Java StringBuffer 与StringBuilder 类的介绍与区别
目录 StringBuffer类(用来解决String类的内存浪费问题) 构造方法 public StringBuffer(); 无参构造 public StringBuffer( String ); ...
- 主成分分析(PCA)介绍
目录 计算过程 投影分量计算 假设你有一家理发店,已经记录了过去一年中所有顾客的头发长度和发型偏好的数据.现在你想从这些数据中提取一些主要的信息,比如顾客最常选择的发型类型,以及不同发型之间的相关性等 ...
- c# webApi返回Excel数据流 || 使用Excel数据流的方式下载Excel
背景: 在前端无法生成特殊的excel表格,或操作复杂的时候会通过后台进行生成excel.但是服务器的资源也非常宝贵,所以通过数据流的方式就可以实现:不在服务器存储的情况下,使前端成功下载excel文 ...
- 夜莺监控发布 v6.7 版本,推送部分商业版功能
熟悉夜莺的小伙伴都知道夜莺分为开源版.专业版.企业版,三个版本良性发展.近期夜莺团队发布了 v6.7 版本,把机器Metadata管理功能推送到了开源版,下面是该功能的简单介绍. 如上图,机器列表页面 ...
- cdn静态资源加速
阿里云cdn产品 https://www.aliyun.com/product/cdn CDN通过广泛的网络节点分布,提供快速.稳定.安全.可编程的全球内容分发加速服务,支持将网站.音视频.下载等内容 ...
- 在MySQL中INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别?
我们有两张表: TableA:id firstName lastName.......................................1 aru ...
- Linux设置时区
引言 在linux安装好了过后,如果时区不正确,需要手动地对它设置我们需要的时区 设置 控制台输入tzselect,回车 tzselect 2.然后选择 5 "Asia" 亚州,回 ...
- spring mvc GET请求方式及传参
spring mvc GET请求方式及传参 @Api(tags = "管理接口") @Slf4j @RestController @RequestMapping("/my ...
- python3读csv文件,出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid con
使用csv.reader(file)读csv文件时,出现如下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in positio ...