Alice and Bob play a game. Initially they have a string s1,s2,…,sns1,s2,…,sn, consisting of only characters . and X. They take alternating turns, and Alice is moving first. During each turn, the player has to select a contiguous substring consisting…
首先分析A能获胜的情况 A能获胜 当且仅当A拿完后所有剩下的都<b 所以一旦存在一个大小为X的 且 b<=X<a 则必是后手赢 当X为 a<=x<2*b 的时候 无论A或B拿 两个人都只能拿一次 拿完就<b作废 而X>=2*b时 如果是B先手 则B可以构造出一个大小刚好为b的来赢得胜利 所以如果有两个及以上的X>=2*b 后手必胜 当有且仅有一个X>=2*b时 A肯定要先操作这块来获得胜利 A能获胜 当且仅当 A拿完后的块只能在[1,b)和[a,2*b…
传送门 首先每一段连续的 $...$ 都是互不影响的,所以可以一段段考虑 考虑最简单的情况,此时每一段都大于等于 $a$ 并且小于 $2b$ ,那么每一段都只能放一次,胜负直接根据段数即可得到答案 考虑如果存在段长小于 $a$ 却大于等于 $b$ 的情况,此时后手可以随时放在那个位置,当然也可以不放,这样胜负就被掌握在后手手里(他可以随时选择交换先后手) 所以对于上面那一种情况,后手是必胜的 否则考虑如果存在两个及以上的段长度大于等于 $2b$,那么后手一定可以在其中一个长度大于等于 $2b$…
Problem   Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Description Input Output Print exactly one integer — the beauty of the product of the strings. Sample Input 3aba Sample Output 3 题解:这个题的思维难度其实不大,需要维护什么东西很容易想到,或…
我们可以把每段连续可以选的字符看成一个游戏, 那么sg[ i ]表示连续 i 个字符可选的sg值. 然后找找第一个就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int…
题目 参考自博客:http://blog.csdn.net/keshuai19940722/article/details/38455269 //字典树,博弈 根据当前节点的后续来确定当前节点的状态,0是由对手决定,1是只有可能输,2是只有可能赢,3是可以决定自己的胜负.这些状态是要综合所有后续情况确定的. #include<stdio.h> #include<iostream> #include<string.h> #include<string> #in…
题目链接: http://codeforces.com/problemset/problem/710/E 题目大意: 问写N个字符的最小花费,写一个字符或者删除一个字符花费A,将当前的字符数量翻倍花费B. 题目思路: [动态规划][最短路] [动态规划]: 如果当前x不是2的倍数,那么一定需要单个字符增加或删除,而这个单个操作越靠后答案越优. dp(x)=a+min(dp(x-1),dp(x+1)) 如果当前x是2的倍数,那么有两种情况,一种是通过翻倍的方式获得,一种是通过累加的方式获得.只要比…
The Smallest String Concatenation 题目链接:http://codeforces.com/problemset/problem/632/C ——每天在线,欢迎留言谈论. 题目大意: 给你n个字符串,相加后 字典序最小 思路: 只需要保证每个相邻的两个字符串组合后 s1+s2>s2+s1 即可. 用sort()快速排序,最后依次输出即可! AC代码: #include <iostream> #include <string> #include &…
Codeforces 1120 C 题意:给一个串\(S\),将这个串分成\(t_1..t_m\),如果\(t_i\)在\(t_1..t_{i-1}\)中作为子串出现过,那么这个的代价是\(b\),否则如果\(|t_i|=1\),那么这个的代价是\(a\). 问最少代价. 思路:第一次现场敲对\(Suffix\ AutoMaton\)祭 首先考虑\(dp_i\)表示处理到第\(i\)个位置,最少的代价. 然后向后枚举一个在\(S_{1..i-1}\)中出现过的子串\(S_{i..j}\),转移\…
题目链接:http://codeforces.com/problemset/problem/455/B 题意: 给你n个字符串,然后进行k局游戏. 每局游戏开始有一个空串,然后双方轮流给这个串的末尾添加字符,并保证新字符串是n个字符串中至少一个串的前缀. 当一方不能添加字符时,这一方输,游戏结束. 每场游戏结束后,这场游戏输的人会成为下一句游戏的先手. 谁赢得了最后一场比赛,谁才会真正赢得比赛. 问你最终真正赢得比赛的人,是第一局游戏的先手还是后手(分别称为First和Second). 题解:…