题解: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. FFmpeg中的关键方法及结构体(二)avformat_open_input

    1.avformat_open_input 该方法声明在libavformat/avformat.h:2093 int avformat_open_input(AVFormatContext **ps ...

  2. .NETCore Nuget 发布包含静态文件 content file

    .NETCore 在.csproj引用资源中标记pack配置 <pack>true</pack>1例如 <ItemGroup> <Content Includ ...

  3. Winform程序在VS中打包成安装程序(带卸载)

    场景 在VS中进行Winform开发时,可以直接在项目上右击选择生成 则会在项目的bin目录下直接生成exe等文件,此时将这个文件夹直接整个复制到别的地方就可以运行. 但是如果将其做成安装包安装的形式 ...

  4. 莫烦pytorch学习记录

    感谢莫烦大神Pytorch B站视频:https://www.bilibili.com/video/av15997678?p=11 一个博主的笔记:https://blog.csdn.net/Will ...

  5. nonatomic 带来的线程安全问题

    一.结论 一个对象对外暴露的读写属性,如果这个属性在多个线程中访问,一定会出现crash. 因此对外暴露的属性一定要考虑线程安全问题. 二.看下面的代码 下面的代码一定会crash,除非obj是ato ...

  6. 8.21考试总结(NOIP模拟45)[打表·蛇·购物·ants]

    有型的东西终究会消逝,不过--终于,这份回忆还是永远不朽的- 前言 这次考试暴露出来了不少问题. 比如答题策略策略不当导致 T2 的 65pts 暴力根本没有打. 知识遗忘太快不牢固,T4 是之前的一 ...

  7. 穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere!

    获得更好的阅读体验,欢迎查看原文:穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere! 1. 创作动机 最近一个星期,我入坑了 neovim, 然后开始配置各 ...

  8. minos 1.2 内存虚拟化——guest

    首发公号:Rand_cs minos 1.2 内存虚拟化--guest 项目来自乐敏大佬:https://github.com/minosproject/minos 本文继续讲述 minos 中的内存 ...

  9. 让Easysearch运行在LoongArch(3C5000L)上

    简介 在上一次,我介绍了在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen,小伙伴们可查 ...

  10. 找不到 .NETFramework,Version=v5.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。

    找不到 .NETFramework,Version=v5.0 的引用程序集.要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序. visual studio 2019 ...