传送门

注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$

考虑如何判断一回合内能否决定胜负

首先如果最左边和最右的 $0$ 或 $1$ 距离小于等于 $k$,那么先手显然赢

如果最左边和最右的 $0$ 和 $1$ 中间都差了大于等于 $k$ 个位置,那么考虑后手能不能赢

枚举一下先手第一步即可(代码因为比赛是写的,比较奇怪,我感觉也不用参考代码吧..)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=2e5+;
int n,m;
char s[N];
int main()
{
n=read(),m=read();
scanf("%s",s+);
int l0=n+,r0=,l1=n+,r1=;
for(int i=;i<=n;i++)
{
if(s[i]=='') l0=min(l0,i),r0=max(r0,i);
else l1=min(l1,i),r1=max(r1,i);
}
if(r0-l0+<=m||r1-l1+<=m) { printf("tokitsukaze\n"); return ; }
int pre=;
for(int i=;i<=n;i++)
{
if(s[i]!=s[i-]) pre=i;
if(i-pre+>=m) { printf("once again\n"); return ; }
}
for(int i=;i+m-<=n;i++)
{
int l=i,r=i+m-;
if(l>l0&&r<r0) { printf("once again\n"); return ; }
if(l>l1&&r<r1) { printf("once again\n"); return ; }
}
printf("quailty\n");
return ;
}

最新文章

  1. SDL简介(网络汇总)
  2. 分析器错误消息: 未能加载类型“Automation.Web.MvcApplication”。
  3. windows 下ssh 客户端
  4. pyinstaller打包pyqt文件
  5. JAVA常见错误处理方法 和 JVM内存结构
  6. 用Spring Data JPA 基于内存存储pojo的简单案例
  7. asp.mvc获取checkbox、radio、select的值
  8. USB接口的SmartCard Class协议标准:ICCD and CCID
  9. VC6.0 导入资源崩溃
  10. 如何学习ACM
  11. 分离数据库时出错:无法对数据库&#39;XXX&#39; 执行删除,因为它正用于复制&quot;的解决方法
  12. Docker容器时间与宿主机时间不一致
  13. 使用http load测试qps
  14. cocos2d-js 小知识
  15. 记一次wepy里面的渲染问题(this.$apply()的使用)
  16. HashMap和Hashtable的区别 2
  17. 127单词接龙 1&#183; Word Ladder1
  18. 使用递归打印二叉树的左视图 java
  19. Django CRM客户关系管理系统
  20. ASP.NET MVC 使用 Datatables (1)

热门文章

  1. fastjson =&lt; 1.2.47 反序列化漏洞浅析
  2. VMWare workstation12配置CentOS6.5虚拟机NAT网络以及虚拟机静态IP
  3. anaconda环境管理
  4. 从Ubuntu 14.04 LTS版升级到Ubuntu 16.04 LTS
  5. html添加注释怎么弄?
  6. 【React自制全家桶】四、React中state与props的分析与比较
  7. tensorflow神经网络与单层手写字识别
  8. Maven-SSM框架整合
  9. 我非要捅穿这 Neutron(四)Open vSwitch in Neutron
  10. Spring学习之==&gt;IoC