A. 哈喽蘑菇
定位
入门题
思路
B. Love You Guys
定位
入门题
说明
原本数据范围在范围,以下题解针对该范围,而对于化简后的范围,直接暴力解决即可。另外,好好学编译原理不会挂科。
思路
题意
给一个,
,依次进行若干***作:对于第
次操作,依次进行两个动作,(1)
(2)
,但
不会超过最初的值(记为
)。
求一个最小的使得第
次操作后
。
解法
若若
注意特判,例如第一天直接挂科的情况。
C. 游戏开发部的小游戏
定位
困难题
思路
考虑DP解决这道题。
我们定义状态为为当前已经分配到了
个石头一组,且已经分配了
个石头。则我们可以得到转移状态为:
这里我们定义为分配
个石头,且
个为一组的方案数,可以注意到,这个
可以用调和级数的做法算出来。
答案即为
D. 爱丽丝,来扫除啦!(Easy Version)
定位
简单题
思路
E. 爱丽丝,来扫除啦!(Hard Version)
定位
困难题
思路
F. 奇数Alice,偶数Bob
定位
中等题
思路
可以注意到,若n为奇数,则先手只需要将任意一个石头拿空,即可必胜。
如果n为偶数,则需判断最小值的数量,在最小值是奇数的情况下,先手是必胜的,否则后手必胜。
来自验题人的思考过程
如果有一堆石子变成了0,那么剩下的操作每次都只能拿走一整堆石头这样就只需要看非0的石头堆数了。
如果有奇数堆的石头,那么Yukimi可以先手把其中一堆变成0,这样剩下偶数堆非0的石头堆,LCF必败。
如果有偶数堆的石头,且有一堆的数目为1,Yukimi必不能先把一堆拿完,否则就鸡了,那么Yukimi只能考虑将目前非1的石头堆掌成1,偶数堆的局面留给LCF,LCF也是一样的操作。比如1 1 3 4。
首先Yukimi操作变成1 1 1 4或者1 1 3 1,LCF操作变成1 1 1 1,随后局面就确定了那么相当于:最小是1的偶数堆情况下,有奇数堆非1的,Yumiki必胜,反之LCF必胜。
G. 黑天鹅的记忆解析
定位
中等题
思路
涉及知识点:字符串处理、动态规划、深度优先搜索
方法一(动态规划)
假设字符串、
的长度分别为
、
。可以考虑一下最终的情况:
的前
位已经以某种放入方式放入
后,
成为了
的前缀。在这种情况下,我们往前倒推第
位是怎么放的。有两个情况:
* 的第
位放到了
的开头处
* 的第
位放到了
的结尾处
对于第一种情况,说明了在第位放入前,
构成了
;
对于第二种情况,说明了在第位放入前,
构成了
。
同理,可以继续往前推第位是怎么放的、第
位是怎么放的、第
位是怎么放的等等,这里就不一一列举了。可以发现在考虑第
位如何放入的时候,
必然构成了
。
由此可以用区间DP来解决这道题,设表示使得
能构成
的方案数。转移方程如下:
答案就是,时间复杂度为
方法二(深度优先搜索)
H. 后缀0
定位
简单题
思路
知识点:数学
于是问题转化为求 (N+1)! 末尾 0 的个数,这是一个经典的问题,该个数取决于因子中 5 的个数。
I. 小Y.的魔法书
定位
中等题
思路
Y.?why not?
其实原题是组合数学,但是由于数据的范围比较小,因此可以考虑dp。
如何描述一种可能的情况,我们使用最后一个子串的位置,考虑最后一个子串的符合的条件,假设残缺的咒语是"",假设完整字符串的前
个和残缺咒语的前
个匹配上,前
个和残缺咒语的前
个匹配上,那么完整字符串的第
个到第
个中间不能出现残缺咒语的第
个字符。再考虑括号匹配,我们可以增加一维dp记录括号匹配的情况。
//当前位置放 ( if(j>=1&&s[j]=='('&&k>=1)f[i][j][k]=(f[i][j][k]+f[i-1][j-1][k-1])%mod; //当前位置放 ) if(j> =1&&s[j]==')') f[i][j][k]=(f[i][j][k]+f[i-1][j-1][k+1])%mod; //当前位置放 ( if(k>=1&&(j==0||s[j]!='('))f[i][j][k]=(f[i][j][k]+f[i-1][j][k-1])%mod; //当前位置放 ) if(j==0||s[j]!=')')f[i][j][k]=(f[i][j][k]+f[i-1][j][k+1])%mod; //当前位置放字母 if(s[j]=='('||s[j]==')'||j==0) f[i][j][k]=(f[i][j][k]+f[i-1][j][k] * 26 % mod)%mod; else f[i][j][k]=(f[i][j][k] + f[i-1][j-1][k] + f[i-1][j][k] * 25 % mod )%mod;
J. 不确定的排列
定位
中等题
思路
题目保证给定的数据没有矛盾,考虑图模型,将一对视作从
到
有一条有向边,因此给定的图是DAG。
二分答案,考虑二分前个不等式,需要判定这
个不等式能否确定一个唯一的排列,重新将这
条边进行组合得到一个新图,在该图上进行拓扑排序。若出现某一时刻,同时存在大于1个入度为0的节点,则必定无法确定这两个节点所对应的变量的大小,若拓扑排序的过程中,每个时刻都只有一个入度为0的节点,则必定能够确定排列。
在确定排列的情况下,重新进行一次拓扑排序,能够知道所有节点的大小关系,确定唯一排列即可。
K. 五彩斑斓的世界
定位
困难题
思路
知识点:栈、括号匹配
对每种颜色 进行考虑,记颜色
出现的次数为
,有以下
种情况:
1、,此时没有连线,无影响。
2、,可能有交点。
3、,可能有交点。
4、,一定有交点,直接输出"Yes"。
所以只需要对所有 和
的情况进行考虑。
先考虑 ,把正多边形拆成一条线,对于每
个相同的颜色相当于括号(),于是整个序列就可以转化成括号序列,问题就转化成求括号匹配是否合法,如果括号序列不合法则有交点,这可以用栈来实现判断。
然后考虑 ,可以在不影响连线的条件下,把
个相同的颜色拆成
种不同的颜色,每种颜色的数量为
,例如"
",我们可以拆成"
",于是转化成了
的情况。