枚举每一个连续的K的第一个位置,如果是先手胜利,那么前[1 , i-1 ]和[ i+k , n ]区间要么全是0,要么全是1

如果能够平局,那么肯定是[1,i-1],以及[ i+k , n]中有两种情况

有一个区间全为0,并且另外有个区间内部最左边的1和最右边的1距离是大于K

有一个区间全为1,并且另外有一个区间内部最左边的0和最右边的0的距离是大于K

或者两个区间均有1或者均有0

如何后手胜利,那么肯定没有平局出现,也就意味着

有一个区间全为0,并且另外有个区间内部最左边的1和最右边的1距离是大于K

有一个区间全为1,并且另外有一个区间内部最左边的0和最右边的0的距离是大于K

由于不带修改,我们可以很简单维护i位置

左边第一次出现1的位置,左边第一次出现0的位置

右边第一次出现1的位置,右边第一次出现0的位置

然后o(n)判断即可,这也算是比较优秀的做法了吧。。。

#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
using namespace std;
const int maxx = 2e5+;
int l1[maxx];
int l0[maxx];
int r1[maxx];
int r0[maxx];
char s[maxx];
int main(){
int n,k;
while(~scanf("%d%d",&n,&k)){
scanf("%s",s+);
for (int i=;i<=n;i++){
if (s[i]==''){
l1[i]=i;
l0[i]=l0[i-];
}else {
l0[i]=i;
l1[i]=l1[i-];
}
}
r0[n+]=n+;
r1[n+]=n+;
for (int i=n;i>=;i--){
if (s[i]==''){
r1[i]=i;
r0[i]=r0[i+];
}else {
r0[i]=i;
r1[i]=r1[i+];
}
}
int flag=;
for (int i=;i<=n-k+;i++){
int ll=;
int lr=i-;
int rl=i+k;
int rr=n;
if(l1[i-]== && r1[i+k]==n+){
flag=min(flag,);
}
if(l0[i-]== && r0[i+k]==n+){
flag=min(flag,);
}
if (l1[i-]== && l0[n]-r0[i+k]+<=k){
flag=min(flag,);
}
if (l0[i-]== && l1[n]-r1[i+k]+<=k){
flag=min(flag,);
}
if (r0[n+k]== && l1[i-]-r1[]+<=k){
flag=min(flag,);
}
if (r1[n+k]== && l0[i-]-r0[]+<=k){
flag=min(flag,);
}
if (r1[n+k]== && l0[i-]-r0[]+>k){
flag=min(flag,);
}
if (r0[n+k]== && l1[i-]-r1[]+>k){
flag=min(flag,);
}
if (l1[i-]== && l0[n]-r0[i+k]+>k){
flag=min(flag,);
}
if (l0[i-]== && l1[n]-r1[i+k]+>k){
flag=min(flag,);
}
if (l1[i-]!= && r1[i+k]!=n+){
flag=min(flag,);
}
if (l0[i-]!= && r0[i+k]!=n+){
flag=min(flag,);
}
}
if (flag==){
printf("tokitsukaze\n");
}else if (flag==){
printf("once again\n");
}else {
printf("quailty\n");
}
}
return ;
}

C. Tokitsukaze and Duel 前缀维护的更多相关文章

  1. Codeforces Round #573 (Div. 2) E. Tokitsukaze and Duel (博弈)

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  2. Codeforces - 1191E - Tokitsukaze and Duel - 博弈论 - 尺取

    https://codeforc.es/contest/1191/problem/E 参考自:http://www.mamicode.com/info-detail-2726030.html 和官方题 ...

  3. E - Tokitsukaze and Duel CodeForces - 1190C (博弈 + 窗体移动)

    "Duel!" Betting on the lovely princess Claris, the duel between Tokitsukaze and Quailty ha ...

  4. Tokitsukaze and Duel CodeForces - 1191E (博弈论)

    大意: 给定01串, 两人轮流操作, Tokitsukaze先手. 每次操作可以选择长为$k$的区间, 全部替换为$0$或$1$, 若替换后同色则赢. 求最后结果. 先判断第一步是否能直接赢, 不能的 ...

  5. Codeforces 1190C. Tokitsukaze and Duel

    传送门 注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$ 考虑如何判断一回合内能否决定胜负 首先如果最左边和最右的 $0$ 或 $1$ 距离 ...

  6. Codeforces 1190C Tokitsukaze and Duel game

    题意:有一个长为n的01串,两个人轮流操作,每个人可以把某个长度为m的区间变成相同颜色,谁在操作后整个串颜色相同就赢了.问最后是谁赢?(有可能平局) 思路:容易发现,如果第一个人不能一击必胜,那么他就 ...

  7. hdu 6794 Tokitsukaze and Multiple 前缀和思想+思维

    题意: t组输入,给你一个长度为n的数组,你每次可以从数组中找到a[i]和a[i+1],然后用a[i]+a[i+1]这个新元素来覆盖掉a[i]和a[i+1]的位置(1<=i<n),从而数组 ...

  8. Codeforces Round #573 (Div. 1)

    Preface 军训终于结束了回来补一补之前的坑发现很多题目题意都忘记了 这场感觉难度适中,F由于智力不够所以弃了,E的话石乐志看了官方英文题解才发现自己已经胡了一大半就差实现了233 水平下降严重. ...

  9. Codeforces Round #573 (Div. 2)

    A:Tokitsukaze and Enhancement 当时看错条件了..以为A>C>B>D.就胡写了判断条件. #include<bits/stdc++.h> us ...

随机推荐

  1. ModelAndView返回mav时,报404

    报404的可能性太多了 简单来看,404后边有信息,说明请已经分配到了控制器 经过调试发现,mav已经分配到了页面 原因,modelandview的包导入错误,正确的包是 import org.spr ...

  2. linux实时系统监控工具mpstat

    mpstat (RHEL5默认不安装) mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件 ...

  3. XtraBackup构建MySQL主从环境的方法

    环境:HE3主库,HE1从库HE1:192.168.1.248HE3:192.168.1.250从库my.cnf加入以下参数并重启数据库:read_only=1log_slave_updates=1( ...

  4. 阿里云合作伙伴峰会SaaS加速器专场 | 商业加持,迈进亿元俱乐部

    导语:本文中,阿里云智能运营专家朱以军从宏观角度分析了SaaS市场的机遇和挑战,重点介绍了阿里云的商业操作系统.同时,阿里云SaaS加速器也在招募更多ISV合作伙伴和我们一起共创专注面向未来的应用,用 ...

  5. 26718汉字,gbk是23940个汉字,gb18030有76556个汉字

    1 a 厑 吖 呵 啊 嗄 嬶 腌 錒 锕 阿 仰 卬 岇 昂 昻 枊 盎 肮 腌 軮 醠 雵 骯 侒 俺 儑 匎 匼 厂 厈 唵 啽 垵 埯 堓 媕 安 屵 岸 峎 峖 广 庵 按 揞 晻 暗 案 ...

  6. UML时序图(Sequence Diagram)学习笔记

    什么是时序图时序图(Sequence Diagram),又名序列图.循序图,是一种UML交互图.它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作. 让我们来看一看visio2016对时序 ...

  7. ubuntn 18 开起ssh 并用root远程登陆

    原文:ubuntn 18 开起ssh 并用root远程登陆 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/article/details/ ...

  8. python正则表达式应用 定义一个函数,求字符串中出现的所有整数之和

  9. 【linux】Ubuntu16.04中文输入法安装

    最近刚给笔记本装了Ubuntu+win10双系统,但是ubuntu16.04没有自带中文输入法,所以经过网上的一些经验搜索整合,分享一下安装中文输入法的心得.本文主要介绍了谷歌拼音跟ibus中文输入法 ...

  10. Python接口自动化(一)接口基础

    HTTP接口熟悉 常见接口介绍 接口工具的使用 fiddler如何mock数据 常见接口基础面试 如何理解接口?前后端解耦,前端和后端数据对接桥梁 接口测试和功能测试区别在哪?接口测试是功能测试的一种 ...