第八届福建大学生程序设计竞赛-D Game(博弈论+kmp)
来源:互联网 发布:免费相册集制作软件 编辑:程序博客网 时间:2024/05/17 03:27
题目链接:http://acm.fzu.edu.cn/contest/problem.php?cid=156&sortid=4
题目大意:又见Alice Bob,1.数字反转 2.数字除十 每次每个人只能选择一个操作,问在有限的次数能谁能取得胜利。
题目思路:只要找完Alice胜利的所有状态,那么剩下的都是Bob胜利。
Alice胜利的情况:1.Bob是Alice的子串或者Bob是Alice逆置的子串
2.当Bob的字符串长度为1且字符串的内容为0
学到的东西:Alice Bob = 博弈论 ,数字这么长,想想kmp
代码:
#include <iostream>#include <string>#include <cstdio>using namespace std;const int maxn=10000;int fail[maxn];void getFail(string zi){ fail[0]=0,fail[1]=0; for(int i=1;i<zi.size();i++){ int j=fail[i]; while(j&&zi[i]!=zi[j]) j=fail[j]; fail[i+1]=zi[i]==zi[j]?j+1:0; }}bool kmp(string fu,string zi){ getFail(zi); int j=0; for(int i=0;i<fu.size();i++){ while(j&&zi[j]!=fu[i]) j=fail[j]; if(zi[j]==fu[i]) j++; if(j==zi.size()) return true; } return false;}int main(){ string fu; string zi; string fu2; int t;cin>>t; while(t--){ bool is=false; cin>>fu>>zi; if(fu.size()>=zi.size()){ is=kmp(fu,zi); if(!is){ for(int j=fu.size()-1;j>=0;j--) fu2.push_back(fu[j]); is = kmp(fu2,zi); } } if(zi.size()==1&&zi[0]=='0') is = true; if(is) cout<<"Alice"<<endl; else cout<<"Bob"<<endl; }}
阅读全文
1 0
- 第八届福建大学生程序设计竞赛-D Game(博弈论+kmp)
- 第八届福建省大学生程序设计竞赛 D.Game【思维+KMP】
- 第八届福建大学生程序设计竞赛-L Tic-Tac-Toe
- 第八届福建大学生程序设计竞赛-B Triangles(简单计算几何)
- fzu 2275 Game [第八届福建省大学生程序设计竞赛 Problem D] [字符串匹配]
- 病毒(湖南省第八届大学生计算机程序设计竞赛)
- FZU2273Triangles+(三角形)+第八届福建省大学生程序设计竞赛
- 第八届福建省大学生程序设计竞赛
- 湖南省第八届大学生计算机程序设计竞赛D题 平方根大搜索
- 第八届福建省大学生程序设计竞赛-重现赛(A+D+K+L)
- 湖南省第八届程序设计竞赛D
- 黑龙江省第八届大学生程序设计竞赛--post office
- 河南省第八届ACM大学生程序设计竞赛总结
- 河南省第八届ACM大学生程序设计竞赛的遗憾
- 湖南省第八届大学生计算机程序设计竞赛部分题解
- 2017年第八届山东省ACM大学生程序设计竞赛后记
- 第八届山东省ACM大学生程序设计竞赛总结
- "浪潮杯”山东省第八届ACM大学生程序设计竞赛 CF
- 记忆纸牌
- Java swing 仿QQ实现账号密码输入框
- 链表面试题之复杂链表的复制
- 【HDU
- 3.6 矩阵运算
- 第八届福建大学生程序设计竞赛-D Game(博弈论+kmp)
- linux下通信服务器端(普通)
- php+ajax实现无刷新数据分页的办法
- Hello World
- 迷宫问题
- 关于http请求报500错误问题
- Nginx隐藏index.php和Pathinfo模式配置例子
- iOS编程学习十六
- Unity3d 技巧(9) 游戏上线必备 适配Steam 安装包需要用到的资料