Codeforces E. Game With String
url
大意:
alice和bob进行博弈。给定一个字符串由X和.组成,每个人每次进行一次操作为将连续数量的"."变成"X",其中alice每次要求的连续数量为a,bob为b,且a>b.
alice先手。问是否能让alice必胜。
思路:
惊奇地发现这是一个非公平博弈(bob占优势,可恶,可怜的alice!),一开始想着SG函数去做,打算用状压来处理情况的,但是思路乱的不行,还是放弃了。
发现每一段连续的"."都是互不干扰的,所以我们可以一段一段来看。
设连续的长度为len。
1.len<b:
很好,大家都没得玩,谁都放不了,不必考虑。
2.len>=b&&len<a:
只有bob能放。这时bob必赢,因为Alice能放的bob都能放,如果哪次bob除了这一段len已经没有选择了,就说明alice也同样没有选择了,那么bob只要放在这里游戏就结束了。
3.len>=a&&len<2*b:
大家都只能在这里放一次,一次性用品。
4.len>=2*b:
对bob来说算是很长的区间了。如果对于这个区间bob能够先手的话,他一定可以构造出一个2类区间,那他就赢了。所以只要有两个这样的区间,bob就同样一定赢了。如果0个的话,那大家就算公平竞争了,一人用一段3类区间,看谁倒霉刚好轮空就是了。(考虑3类区间的奇偶性).接下来就是只有一个4类的情况了。那么考虑alice先手:她会选择尽可能截断这个长区间,并且要保证两边的多出来的区间不是2类也不是4类(2类不用说了,如果有四类的话,那bob就可以构造出一个2类,那他也必胜),如果能做到这个的话,那她就能跟bob公平竞技了,同上,考虑3类的奇偶性。同时注意,还要加上alice截断后可能产生的3类区间。
(真是伤脑壳。。。)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k;
ll t;
char s[300010];
ll a,b;
bool solve()
{bool c33=0;ll len;ll c1=0,c2=0,c3=0;for(int l=1,r=1;l<=n;l=r+1,r=l){if(s[r]=='X') continue;while(r<n&&s[r+1]=='.') r++;//分段 ll d=r-l+1;if(d<b) continue;if(d>=b&&d<a){return 0;continue;}if(d>=a&&d<2*b)//一人一个 {c2++;continue;}if(d>=2*b){c3++;len=d;continue;}//printf("%lld\n",d);}//cout<<c1<<" "<<c2<<' '<<c3<<endl;if(c2%2) c33=1;//是奇数,所以要先手去抢一个来 ,先手一定先拿这个,那么结果是//全部拿完c3后轮到bob行动 if(c3>=2){//cout<<"NO"<<endl;//可以拥有c1类,bob必胜 return 0;}if(c3==0){if(c33==1){//cout<<"YES"<<endl;return 1;} else{// cout<<"NO"<<endl;return 0;}} ll num=0;if(c3==1){bool fsd=0;//是否可以截成不包括c2,c4; for(int i=0;i<=len-a;++i){ll llen=i;ll rlen=len-a-i;if(llen>=b&&llen<a) continue;if(rlen>=b&&rlen<a) continue;if(llen>=2*b) continue;if(rlen>=2*b) continue;fsd=1;num=(llen>=a&&llen<2*b)+(rlen>=a&&rlen<2*b);if((c2+num)%2==0) return 1;}} return 0;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);scanf("%lld",&t);while(t--){scanf("%lld%lld",&a,&b);scanf("%s",s+1);n=strlen(s+1);if(solve()) printf("YES\n");else printf("NO\n");}return 0;
}
Codeforces E. Game With String相关推荐
- Codeforces Problem-1579A Casimir‘s String Solitaire
Codeforces Problem-1579A Casimir's String Solitaire 题目链接 题目大意: Casimir有一个字符串s,里面只包含'A''B''C'三种字符,现在他 ...
- codeforces 960A Check the string
题目链接:http://codeforces.com/contest/960/problem/A 题意:有A,B,C三个小朋友,A会把一个全为a的字符串给B,然后B会在这个字符串尾添加若干个b,然然后 ...
- Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换
传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...
- (DP)codeforces - 710E Generate a String
原题链接:http://www.codeforces.com/problemset/problem/710/E 题意:一个字符串,开始长度为0,目标长度为n,长度+1或-1需要的时间为x,长度*2需要 ...
- codeforces 889B - Restoration of string
http://codeforces.com/contest/889/problem/B 题意:给你 n 个由小写字母组成的字符串,n个字符串全不相同,要求构造一个母串,使所有字符串在母串中出现的频率都 ...
- Codeforces 1480A. Yet Another String Game (阅读理解题)
题意 Alice和Bob对一个小写英文字符串进行操作,Alice先手. Alice的策略是让字符串字典序最小,Bob的策略是让字符串的字典序最大. 每次双方都只能选择一个未操作过的字符进行替换(将小写 ...
- CodeForces - 817F Graph and String(dfs判二分图)
题目链接:点击查看 题目大意:给出一张图,现在要求给出一种合适的染色方案,使得: 只能用 ' a ' , ' b ' , ' c ' 进行染色 有边相连的两个点的颜色要么相同,要么相邻,不能是 ' a ...
- CodeForces - 1295C Obtain The String(dp预处理+贪心)
题目链接:点击查看 题目大意:给出一个字符串 s 和一个字符串 t ,再给出一个字符串 z ,初始时字符串 z 为空串,现在需要利用规则构造字符串 z ,使得 z == t ,规则就是每次可以挑选字符 ...
- Codeforces Round #402 D String Game(二分)
[题目类型]二分答案 &题解: 只要你想到二分答案就不是难题了,但我当时确实是想不到. [时间复杂度]\(O(nlogn)\) &代码: #include <cstdio> ...
- codeforces E. Game with String 概率
题意 这道题目的叙述不好理解: 给你一个字符串sss,小a和小b都知道.现在小b要把字符串的左边一段移动到最右边,生成一个新的字符串s′" role="presentation&q ...
最新文章
- GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法
- 再见中台,你好!企业数字化转型
- redhat及deban系列linux软件管理的一些问题
- 穿迷宫、搭积木、现场编程 看看孩子们的机器人“大战”
- 排序 (2)快速排序-多个数组
- 发布md 的文章测试
- pycharm中无法识别相对路径的问题
- mysql按中文拼音字母排序_解析MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...
- 如何安装php5.5,源码安装php5.5
- CSS 如何让li横向居中显示
- 微信群怎么设置验证加入_怎么让微信群裂变拉人/拉人进群奖励方案/微信裂变营销方案策划...
- h3c trunk口改access_H3CNE配置VLAN的Access链路端口和Trunk链路端口
- Mac terminal 清屏快捷键
- 宏定义语句的 GPBCON 、GPBDAT、GPBUP 地址(老师布置的作业,没接触过,不懂,求大神解答,万分感谢)
- 第一次开发EOS区块链的经验
- 弘兵金融学院 站在山顶 看不见山
- 计算机职业生涯测评,皮纹检测职业版——职业生涯规划指南测评系统
- java的clone你知道多少?
- List集合(列表)
- php中关于文件操作的面试题,php面试题及答案
热门文章
- 1090 Highest Price in Supply Chain
- 浅谈仪器控制【1.Python与Labview/Labwindows】
- IDEA+MySQL+JavaFX之通讯录系统
- type-c速度测试软件,速度篇—Type-C/USB3.0接口到底谁快_固态硬盘评测-中关村在线...
- restful什么意思_RESTful的真正含义是什么?
- 蒙特卡罗MCNP学习汇总(五)---高级几何建模
- Kali社会工程学套件入侵Windows
- 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
- 工具提取MP4中的音视频
- microsoft认证解说