题解: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 双人游戏的更多相关文章

  1. 题解——洛谷P2734 游戏A Game 题解(区间DP)

    题面 题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  10. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 【BI 可视化插件】怎么做? 手把手教你实现

    背景 对于现在的用户来说,插件已经成为一个熟悉的概念.无论是在使用软件. IDE 还是浏览器时,插件都是为了在原有产品基础上提供更多更便利的操作.在 BI 领域,图表的丰富性和对接各种场景的自定义是最 ...

  2. 使用C#开发微信公众号对接ChatGPT和DALL-E

    本人是一家小公司的技术总监,工作包括写市场分析.工作汇报.产品推广文案及代码开发等.在ChatGPT推出之后本人一直在工作中使用,在头脑风暴.大纲生成.语句优化.代码生成方面很有效果.但ChatGPT ...

  3. SELinux策略语法以及示例策略

    首发公号:Rand_cs SELinux策略语法以及示例策略 本文来讲述 SELinux 策略常用的语法,然后解读一下 SELinux 这个项目中给出的示例策略 安全上下文 首先来看一下安全上下文的格 ...

  4. 微博Lite版安装

    微博Lite版安装 前置条件,需要使用chrome,或chromium内核的浏览器. 1.浏览器输入:https://m.weibo.cn/ 2.在地址栏最右侧点击安装. --

  5. 双网卡、多网卡指定IP分别访问网卡(windows添加静态路由)

    有两块网卡,网关分别是 128.0.100.198 和 192.168.10.2,128.0.100.198,网速10M.192.168.10.2,网速100M.平时上网用192.168.10.2,访 ...

  6. JVM垃圾回收器(详解)

    引言 垃圾回收(GC,Garbage Collection) 在笔者上一篇文章中(JVM内存模型),介绍了JVM内存模型以及JVM运行时的数据区,堆是JVM内存区域里面最大的一块区域,用于存放实例数据 ...

  7. restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法

    restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法 1.JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰.具体返 ...

  8. mysql时间字段新增和修改默认时间,删除字段

    mysql时间字段新增和修改默认时间,删除字段##新增字段ALTER TABLE tbl_test ADD COLUMN `create_time` DATETIME NULL DEFAULT CUR ...

  9. MySQL bit类型增加索引后查询结果不正确案例浅析

    昨天同事遇到的一个案例,这里简单描述一下:一个表里面有一个bit类型的字段,同事在优化相关SQL的过程中,给这个表的bit类型的字段新增了一个索引,然后测试验证 时,居然发现SQL语句执行结果跟不加索 ...

  10. 终端读取iOS项目所有设置参数(版本号、应用名等)

    在某些场景下(比如自动化打包等),我们需要从终端来读取到iOS项目的数据,首先先上代码 xcodebuild -showBuildSettings -target 项目target 但有时候我们需要将 ...