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相关推荐

  1. Codeforces Problem-1579A Casimir‘s String Solitaire

    Codeforces Problem-1579A Casimir's String Solitaire 题目链接 题目大意: Casimir有一个字符串s,里面只包含'A''B''C'三种字符,现在他 ...

  2. codeforces 960A Check the string

    题目链接:http://codeforces.com/contest/960/problem/A 题意:有A,B,C三个小朋友,A会把一个全为a的字符串给B,然后B会在这个字符串尾添加若干个b,然然后 ...

  3. Educational Codeforces Round 96 E. String Reversa 线段树模拟序列交换

    传送门 文章目录 题意: 思路: 题意: 思路: 与上一篇题解大同小异,无非就是不需要枚举排列了. // Problem: E. String Reversal // Contest: Codefor ...

  4. (DP)codeforces - 710E Generate a String

    原题链接:http://www.codeforces.com/problemset/problem/710/E 题意:一个字符串,开始长度为0,目标长度为n,长度+1或-1需要的时间为x,长度*2需要 ...

  5. codeforces 889B - Restoration of string

    http://codeforces.com/contest/889/problem/B 题意:给你 n 个由小写字母组成的字符串,n个字符串全不相同,要求构造一个母串,使所有字符串在母串中出现的频率都 ...

  6. Codeforces 1480A. Yet Another String Game (阅读理解题)

    题意 Alice和Bob对一个小写英文字符串进行操作,Alice先手. Alice的策略是让字符串字典序最小,Bob的策略是让字符串的字典序最大. 每次双方都只能选择一个未操作过的字符进行替换(将小写 ...

  7. CodeForces - 817F Graph and String(dfs判二分图)

    题目链接:点击查看 题目大意:给出一张图,现在要求给出一种合适的染色方案,使得: 只能用 ' a ' , ' b ' , ' c ' 进行染色 有边相连的两个点的颜色要么相同,要么相邻,不能是 ' a ...

  8. CodeForces - 1295C Obtain The String(dp预处理+贪心)

    题目链接:点击查看 题目大意:给出一个字符串 s 和一个字符串 t ,再给出一个字符串 z ,初始时字符串 z 为空串,现在需要利用规则构造字符串 z ,使得 z == t ,规则就是每次可以挑选字符 ...

  9. Codeforces Round #402 D String Game(二分)

    [题目类型]二分答案 &题解: 只要你想到二分答案就不是难题了,但我当时确实是想不到. [时间复杂度]\(O(nlogn)\) &代码: #include <cstdio> ...

  10. codeforces E. Game with String 概率

    题意 这道题目的叙述不好理解: 给你一个字符串sss,小a和小b都知道.现在小b要把字符串的左边一段移动到最右边,生成一个新的字符串s′" role="presentation&q ...

最新文章

  1. GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法
  2. 再见中台,你好!企业数字化转型
  3. redhat及deban系列linux软件管理的一些问题
  4. 穿迷宫、搭积木、现场编程 看看孩子们的机器人“大战”
  5. 排序 (2)快速排序-多个数组
  6. 发布md 的文章测试
  7. pycharm中无法识别相对路径的问题
  8. mysql按中文拼音字母排序_解析MySQL按常规排序、自定义排序和按中文拼音字母排序的方法...
  9. 如何安装php5.5,源码安装php5.5
  10. CSS 如何让li横向居中显示
  11. 微信群怎么设置验证加入_怎么让微信群裂变拉人/拉人进群奖励方案/微信裂变营销方案策划...
  12. h3c trunk口改access_H3CNE配置VLAN的Access链路端口和Trunk链路端口
  13. Mac terminal 清屏快捷键
  14. 宏定义语句的 GPBCON 、GPBDAT、GPBUP 地址(老师布置的作业,没接触过,不懂,求大神解答,万分感谢)
  15. 第一次开发EOS区块链的经验
  16. 弘兵金融学院 站在山顶 看不见山
  17. 计算机职业生涯测评,皮纹检测职业版——职业生涯规划指南测评系统
  18. java的clone你知道多少?
  19. List集合(列表)
  20. php中关于文件操作的面试题,php面试题及答案

热门文章

  1. 1090 Highest Price in Supply Chain
  2. 浅谈仪器控制【1.Python与Labview/Labwindows】
  3. IDEA+MySQL+JavaFX之通讯录系统
  4. type-c速度测试软件,速度篇—Type-C/USB3.0接口到底谁快_固态硬盘评测-中关村在线...
  5. restful什么意思_RESTful的真正含义是什么?
  6. 蒙特卡罗MCNP学习汇总(五)---高级几何建模
  7. Kali社会工程学套件入侵Windows
  8. 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。
  9. 工具提取MP4中的音视频
  10. microsoft认证解说