首先分析A能获胜的情况 A能获胜 当且仅当A拿完后所有剩下的都<b

所以一旦存在一个大小为X的 且 b<=X<a 则必是后手赢

当X为 a<=x<2*b 的时候 无论A或B拿 两个人都只能拿一次 拿完就<b作废

而X>=2*b时 如果是B先手 则B可以构造出一个大小刚好为b的来赢得胜利 所以如果有两个及以上的X>=2*b 后手必胜

当有且仅有一个X>=2*b时 A肯定要先操作这块来获得胜利 A能获胜 当且仅当 A拿完后的块只能在[1,b)和[a,2*b)这个范围内

因为一旦出现[b,a)或者[2*b,无穷)这两个范围内的块 A必输 所以我们只要暴力枚举 看是否存在A取完后 [a,2*b) 范围内的块为偶数的情况即可

#include<bits/stdc++.h>
#define RG register
using namespace std;
typedef long long ll;
const int MAXN = ;
char f[];
int num[];
int number[];
int cnt = ;
int aa, bb, cc;
int main() {
int T;
int a, b, aim;
scanf("%d", &T);
while (T--) {
aim = cnt = ;
scanf("%d %d", &a, &b);
scanf("%s", f + );
int len = strlen(f + );
for (int i = ; i <= len + ; i++) {
num[i] = ;
}
for (int i = ; i <= len; i++) {
num[i] = f[i] == '.' ? (num[i - ] + ) : ;
}
for (int i = ; i <= len + ; i++)
if (num[i] == && num[i - ] > -) {
number[++cnt] = num[i - ];
}
bool flag = ;
int now = ;
for (int i = ; i <= cnt; i++) {
if (number[i] >= b && number[i] < a) {
flag = ;
break;
}
if (number[i] >= * b) {
if (aim == ) {
aim = i;
} else {
flag = ;
break;
}
}
if (number[i] >= a && number[i] < * b) {
now++;
}
}
if (flag == ) {
printf("NO\n");
} else {
if (aim == ) {
if (now & ) {
printf("YES\n");
} else {
printf("NO\n");
}
} else {
//cout<<" aim: "<<aim<<endl;
bool flag2 = ;
int sum = number[aim];
for (int r1 = ; sum - a - r1 >= ; r1++) {
int r2 = sum - a - r1;
if (r1 >= * b || (r1 >= b && r1 < a)) {
continue;
}
if (r2 >= * b || (r2 >= b && r2 < a)) {
continue;
}
int add = ;
if (r1 >= a && r1 < * b) {
add++;
}
if (r2 >= a && r2 < * b) {
add++;
}
if ((now + add) % == ) {
flag2 = ;
break;
}
}
if (flag2) {
printf("YES\n");
} else {
printf("NO\n");
}
}
}
}
return ;
}

CodeForces - 1221E Game With String 分类讨论的更多相关文章

  1. Codeforces 685C - Optimal Point(分类讨论+乱搞)

    Codeforces 题面传送门 & 洛谷题面传送门 分类讨论神题. 首先看到最大值最小,一眼二分答案,于是问题转化为判定性问题,即是否 \(\exists x_0,y_0,z_0\) 满足 ...

  2. Codeforces 1513F - Swapping Problem(分类讨论+乱搞)

    Codeforces 题目传送门 & 洛谷题目传送门 简单题,难度 *2500 的 D2F,就当调节一下一模炸裂了的自闭的心情,稍微写写吧. 首先我看到这题的第一反应是分类讨论+数据结构,即枚 ...

  3. Codeforces 1461F - Mathematical Expression(分类讨论+找性质+dp)

    现场 1 小时 44 分钟过掉此题,祭之 大力分类讨论. 如果 \(|s|=1\),那么显然所有位置都只能填上这个字符,因为你只能这么填. scanf("%d",&n);m ...

  4. ACM学习历程—CodeForces 590A Median Smoothing(分类讨论 && 数学)

    题目链接:http://codeforces.com/problemset/problem/590/A 题目大意是给一个串,头和尾每次变换保持不变. 中间的a[i]变成a[i-1],a[i],a[i+ ...

  5. CodeForces - 1221E Game With String(不平等博弈)

    Alice and Bob play a game. Initially they have a string s1,s2,…,sns1,s2,…,sn, consisting of only cha ...

  6. Codeforces 870F - Path(数论+分类讨论+正难则反)

    Codeforces 题目传送门 & 洛谷题目传送门 首先考虑 \(d(u,v)\) 是个什么东西,分情况讨论: \(u\not\perp v\),\(d(u,v)=1\) \(u\perp ...

  7. CodeForces 382C Arithmetic Progression (排序+分类讨论)

    题意:给出一个长度为n的序列,表示有n张卡片,上面的数字,现在还有一张卡片,上面没有数字,问说可以写几种数字在这张卡片上面, 使得n+1张卡片上的数字可以排列成一个等差数列,有无限多种时输出-1. 析 ...

  8. CodeForces 792C - Divide by Three [ 分类讨论 ]

    删除最少的数位和前缀0,使得剩下的数能被3整除 等价于各数位数字之和能被3整除. 当前数位和可能是 0, 1, 2(mod 3) 0: 直接处理 1: 删除一个a[i]%3 == 1 或者 两个a[i ...

  9. Codeforces 1221E. Game With String

    传送门 首先每一段连续的 $...$ 都是互不影响的,所以可以一段段考虑 考虑最简单的情况,此时每一段都大于等于 $a$ 并且小于 $2b$ ,那么每一段都只能放一次,胜负直接根据段数即可得到答案 考 ...

随机推荐

  1. Instant Messaging for Business: Your 10 Best Options

    Instant Messaging for Business: Your 10 Best Options By Iaroslav Kudritskiy It's probably not a surp ...

  2. OpenCV.20190628

    1.OpenCV提取ORB特征并匹配 - 简书.html(https://www.jianshu.com/p/420f8211d1cb) OpenCV提取ORB特征并匹配 - 简书.html(http ...

  3. solr后台操作Documents之增删改查

    偶尔会用到solr后台操作一些数据,比如测试等一些情况.但具体用的时候可能会忘记,或者搜的时候结果不全,在此略详细的记一下. 1.添加 {"id":6,"title&qu ...

  4. 修改Ubuntu屏幕的分辨率

      最近重新装了一下环境,用vnc连接服务器,发现分辨率过低,于是查了一下如何修改分辨率,将其调高.   编辑/etc/default/grub 搜索"#GRUB_GFXMODE=640x4 ...

  5. [Agc029B]Powers of two_贪心_树形dp

    Powers of two 题目链接:https://atcoder.jp/contests/agc029/tasks/agc029_b 数据范围:略. 题解: 可能一点思路都没有. 但是我们发现:如 ...

  6. 解决redis运行期间key值过期但是内存memory依然占用过高

    要解决这个问题,首先要了解redis info信息中几个数据的意义:   used_memory:810575104 //数据占用了多少内存(字节)  used_memory_human:773.02 ...

  7. c++ 之private /protect/ public

    C++中public.protect.private的访问权限控制 访问权限 一个类的public成员变量.成员函数,可以通过类的成员函数.类的实例变量进行访问 一个类的protected成员变量.成 ...

  8. Python面向对象中的继承、多态和封装

    Python面向对象中的继承.多态和封装 一.面向对象的三大特性 封装:把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数,对象, 打包成模块. 这都属于封装思想. 继承:⼦类可以⾃ ...

  9. 给postmessage加上callback方法

    postmessage双向通信中,是不能使用回调函数的. window.postmessage({msg:'hello',callback:function(e){ do something with ...

  10. WebApi 空项目生成帮助文档

    1.创建一个WebApi的空项目 2.写一些接口,在接口文档中忽略某个方法可以使用  [ApiExplorerSettings(IgnoreApi = true)] 特性 3.在Nuget中添加 Mi ...