CF1190C Tokitsukaze and Duel
搬运一下本喵的 lg 博客 qwq
详细讲一下如何判定后手能否获胜,对其他题解做个补充。(蒟蒻的我想了好久来着
此题的关键点在于可以重复上一个人的操作使局面保持不变。
考虑先手的获胜条件,由上一段可知若先手不能在第一步获胜,则后手一定可以重复先手的操作,使其回到原来的局面,从而保证自己不败。
考虑后手的获胜条件,与先手同理,若后手不能一步致胜,先手同样可以重复后手的操作。
综上所述,当且仅当其中一人能够一步致胜时,才能获得胜利。
先手
若先手一步致胜,则需保证所选区间以外的数字全部相同。
对于串中的位置 \(i\) ,维护 \(l_i\),\(r_i\) 分别表示其左边及右边在字符相同时的最远位置。
枚举所选长度为 \(k\) 的区间为 \([i,j]\),当 \(l_i=1\),\(r_j=n\) 且 \(a_{i-1}=a_{j+1}\) 时,满足区间外的所有数字相同,可以获胜。
后手
后手获胜,需要保证先手做出任何选择都能使后手一步致胜。
设先手选择的区间为 \([i,j]\) 。把当前局面分成三部分,分别为 \([1,i-1]\),\([i,j]\),\([j+1,n]\) 。后手想要获胜,必须使左右两区间的所有值都与 \([i,j]\) 的值相等。而在一次操作中,后手只能操作其中的一个区间。也就是说,需要保证其中的一个区间值全部与 \([i,j]\) 相等。
当 \(n>2k\) 时, \([1,i-1]\) 和 \([j+1,n]\) 必然有一个长度大于 \(k\)。此时后手无法获胜。
这时候我们会发现一个问题,假设 \([1,i-1]\) 的值全为 \(0\) ,且 \([j+1,n]\) 中不全是同一个值,那么先手只要把 \([i,j]\) 全部变为 \(1\) ,后手还是无法胜利。因此要保证无论先手填的值是什么,都有其中一个区间与之全部相等,就需要左右两个区间一个全是 \(0\),一个全是 \(1\) 。
因此,若存在 \([i,j]\) 不满足 \(l_{i - 1} = 1\) 且 \(r_{j+1} = n\) ,后手无法获胜。
\(code:\)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,k,a[N];
int l[N],r[N];
char s[N];
int main()
{
scanf("%d%d%s",&n,&k,s+1);
for(int i=1;i<=n;i++)
{
if(s[i]=='0') a[i]=0;
else a[i]=1;
}
l[1]=1;l[0]=1;
for(int i=2;i<=n;i++)
{
if(a[i]==a[i-1]) l[i]=l[i-1];
else l[i]=i;
}
r[n]=n;r[n+1]=n;
for(int i=n-1;i;i--)
{
if(a[i]==a[i+1]) r[i]=r[i+1];
else r[i]=i;
}
for(int i=1;i<=n-k+1;i++)
{
int j=i+k-1;
if(l[i-1]==1&&r[j+1]==n&&a[i-1]==a[j+1])
{
cout<<"tokitsukaze"<<endl;
return 0;
}
}
if(n>2*k)
{
cout<<"once again"<<endl;
return 0;
}
bool flag=0;
for(int i=2;i<=n-k;i++)
{
if(l[i-1]!=1||r[i+1]!=n)
{
cout<<"quailty"<<endl;
return 0;
}
}
cout<<"once again"<<endl;
return 0;
}
CF1190C Tokitsukaze and Duel的更多相关文章
- Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- E - Tokitsukaze and Duel CodeForces - 1190C (博弈 + 窗体移动)
"Duel!" Betting on the lovely princess Claris, the duel between Tokitsukaze and Quailty ha ...
- Tokitsukaze and Duel CodeForces - 1191E (博弈论)
大意: 给定01串, 两人轮流操作, Tokitsukaze先手. 每次操作可以选择长为$k$的区间, 全部替换为$0$或$1$, 若替换后同色则赢. 求最后结果. 先判断第一步是否能直接赢, 不能的 ...
- Codeforces 1190C. Tokitsukaze and Duel
传送门 注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$ 考虑如何判断一回合内能否决定胜负 首先如果最左边和最右的 $0$ 或 $1$ 距离 ...
- Codeforces - 1191E - Tokitsukaze and Duel - 博弈论 - 尺取
https://codeforc.es/contest/1191/problem/E 参考自:http://www.mamicode.com/info-detail-2726030.html 和官方题 ...
- Codeforces 1190C Tokitsukaze and Duel game
题意:有一个长为n的01串,两个人轮流操作,每个人可以把某个长度为m的区间变成相同颜色,谁在操作后整个串颜色相同就赢了.问最后是谁赢?(有可能平局) 思路:容易发现,如果第一个人不能一击必胜,那么他就 ...
- C. Tokitsukaze and Duel 前缀维护
枚举每一个连续的K的第一个位置,如果是先手胜利,那么前[1 , i-1 ]和[ i+k , n ]区间要么全是0,要么全是1 如果能够平局,那么肯定是[1,i-1],以及[ i+k , n]中有两种情 ...
- Codeforces Round #573 (Div. 1)
Preface 军训终于结束了回来补一补之前的坑发现很多题目题意都忘记了 这场感觉难度适中,F由于智力不够所以弃了,E的话石乐志看了官方英文题解才发现自己已经胡了一大半就差实现了233 水平下降严重. ...
- Codeforces Round #573 (Div. 2)
A:Tokitsukaze and Enhancement 当时看错条件了..以为A>C>B>D.就胡写了判断条件. #include<bits/stdc++.h> us ...
- CF:322D - Ciel and Duel 贪心 或者 DP 我用的贪心 。。难道sort跟qsort是不一样的么?
D. Ciel and Duel time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
随机推荐
- 【Python】Beautiful Soup
简介 Beautiful Soup 对象 我全部使用soup表示: Beautiful Soup 简介: 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据. ...
- 2021级HAUT新生周赛题解汇总
2021级HAUT新生周赛(一)题解@张君毅:第一场 2021级HAUT新生周赛(二)题解@李亚凯:第二场 2021级HAUT新生周赛(三)题解@李晨曦:第三场 2021级HAUT新生周赛(四)题解@ ...
- java反射newInstance()带删除线的问题
从java9开始,newInstance()方法不建议使用导致idea自动画了条删除横线 解决方法: //改用getDeclaredConstructor().newInstance() Object ...
- html标签tr td是什么意思
<table>代表表格</table><tr>代表表格中的一行</tr><td>代表表格中的一列</td>'tr'与'td'交成 ...
- http头部字段Origin和Access-Control-Allow-Origin解决请求跨域
Http协议中请求头和响应头携带了很多信息,其中 请求头 Origin,响应头 Access-Control-Allow-Origin 与跨域有关. 为了验证跨域,要将客户端和服务端分配在不同端口,这 ...
- 微信小程序预览时显示有图片未上传
最近在做小程序项目,在项目里面加了几个图片.在预览调试时出现弹窗显示"文件未上传",但是在左侧的模拟器上却是能正常显示的. 解决思路: 图片在本地和模拟器上显示正常,表示图片本身没 ...
- *CTF和nssctf#16的wp
*ctf2023 fcalc 分析程序 本题存在漏洞,是生活中很容易犯的错误,就是循环或者判断的时候没有注意多一还是少一,这种会发生很严重的问题.比如这个题在过滤数字的时候没有过滤掉0,所以输入0的时 ...
- 02.中台框架前台项目 admin.ui.plus 学习-介绍与简单使用
中台框架前台项目 admin.ui.plus 的初识 基于 vue3.x + CompositionAPI setup 语法糖 + typescript + vite + element plus + ...
- [ABC132D] Blue and Red Balls
2023-01-16 题目 题目传送门 翻译 翻译 难度&重要性(1~10):3 题目来源 AtCoder 题目算法 dp 解题思路 因为蓝球的数量是固定的,题目让我们求,在取 \(i\) 次 ...
- numpy和pandas的基本用法
安装numpy模块 pip install numpy 可以通过导入numpy模块来使用它 import numpy as np 1.创建数组: a = np.array([1, 2, 3, 4, 5 ...