Codeforces Gym 100814J Game 简单博弈
来源:互联网 发布:mac steam玩windows 编辑:程序博客网 时间:2024/05/21 03:25
题目大意:
就是现在初始的时候有一个字符串S, 长度不超过10000
两个人轮流操作
每次可以选择从左向右将连续两个字符按照给出的矩阵进行变化
或者选择从右往左
如果最后剩下的是元音字母则Salah获胜, 否则Marzo获胜
Salah先手问谁会获胜
大致思路:
比较水, 考虑到S在每次变换之后长度都会接近减半, 于是可以直接dfs暴力搜索
记下当前串以及当前轮到谁即可
代码如下:
Result : Accepted Memory : 148 KB Time : 31 ms
/* * Author: Gatevin * Created Time: 2015/11/21 16:25:41 * File Name: Sakura_Chiyo.cpp */#include<iostream>#include<sstream>#include<fstream>#include<vector>#include<list>#include<deque>#include<queue>#include<stack>#include<map>#include<set>#include<bitset>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<cctype>#include<cmath>#include<ctime>#include<iomanip>using namespace std;const double eps(1e-8);typedef long long lint;int T;char s[30][30];char get(char c1, char c2){ return s[c1 - 'a'][c2 - 'a'];}bool isVowel(char c){ return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';}int dfs(string now, char who){ int sz = now.size(); if(sz == 1 && isVowel(now[0])) return 1; if(sz == 1 && !isVowel(now[0])) return 0; string left , right; for(int i = 0; i + 1 < sz; i += 2) left.push_back(get(now[i], now[i + 1])); if(sz & 1) left.push_back(now[sz - 1]), right.push_back(now[0]); for(int i = (sz & 1); i < sz; i += 2) right.push_back(get(now[i], now[i + 1])); int L = dfs(left, who == 's' ? 'm' : 's'), R = dfs(right, who == 's' ? 'm' : 's'); if(who == 's') { if(L == 1 || R == 1) return 1; return 0; } else { if(L == 0 || R == 0) return 0; return 1; }}int main(){ ios::sync_with_stdio(0); cin>>T; while(T--) { string tmp; for(int i = 0; i < 26; i++) { cin>>tmp; for(int j = 0; j < 26; j++) s[i][j] = tmp[j]; } string in; cin>>in; printf("%s\n", dfs(in, 's') ? "Salah" : "Marzo"); } return 0;}/*1daeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaa*/
0 0
- Codeforces Gym 100814J Game 简单博弈
- [Codeforces Gym] 100162A Box Game 博弈+二分图匹配
- codeforces-gym-100187-J【dfs】
- Codeforces Gym 101246J Buoys
- Codeforces Gym 100753J Souvenirs
- Codeforces Gym 100379G Wythoff’s game with three piles 博弈
- Codeforces Gym 100379L Game with a string 博弈+交互题
- 【CodeForces】Plate Game(博弈)
- Codeforces Gym 100342J Triatrip Bitset+枚举
- Codeforces Gym 100800J Jelly Raid (暴搜)
- CodeForces Gym 100989J Objects Panel (A)
- 【模拟】NEERC15 J Jump (Codeforces GYM 100851)
- Codeforces Gym 100962 J. Jimi Hendrix
- Codeforces gym 101343 J 状压dp
- Codeforces Gym 101142 J. Java2016 (构造)
- Codeforces Gym 101173 J. Jazz Journey
- Codeforces GYM 100753J: Souvenirs 题解
- codeforces Gym 100187J J. Deck Shuffling dfs
- window10+CentOS双系统安装
- LeetCode 054 Spiral Matrix
- 芯片设计到硬件开发到软件研发
- 中共一大代表李汉俊生平简介 李汉俊后代近况介绍
- Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
- Codeforces Gym 100814J Game 简单博弈
- Linux文件系统的特殊权限之SUID
- ARM嵌入式linux开发入门视频教程
- bzoj1503【NOI2004】郁闷的出纳员
- Android并发编程之白话文详解Future,FutureTask和Callable
- Android的Service了解和两种启动方式
- php curl选项列表(超详细)
- 浅析Java中的final关键字
- CSS 表格制作日历