题目链接(洛谷)
抄卡组
- 主要考察:代码实现
- 算法:字符串匹配
- 突破口:发现只用讨论左右两端的’*’
- 正确思路:讨论两个字符串之间的匹配方法
由于之前没怎么修过字符串专题,这题不会实现o(╯□╰)o
考虑对于两个字符串:
如果两个都没有 ∗ ∗ ,则直接匹配
如果两个都有,则只要考虑两者的最长公共前缀是否在其中一个为打止,后缀也一样,因为可以证明可以强行把中间变为一样,只有两边的不能处理
如果只有其中一个有,则考虑有 ∗ ∗ 的串的最左边的的左边与另一个串是否匹配,后缀类似,再考虑中间被 ∗ ∗ 分割的子串是否在另一个串中出现过且依次出现
码农实现
道路堵塞
- 主要考察:代码实现
- 算法:spfa
- 突破口:发现删去一条边后的最短路一定是从最短路上离开再回到最短路
- 正确思路:对最短路的性质进行探究,发现次短路性质,码农实现
如果图论学得比较好的话,看到这题脑袋中一定会有一个清楚的认识:删去最短路中的一条边后的最短路一定是沿着最短路走一截(可能为0)后离开最短路,再回到最短路,再沿着最短路走完这一截
有了这个认识,这题顶多就是一个提高组第二题的难度,考虑每一条从最短路上出发回到最短路上的可能可以更新几段答案(起点到终点)
接下来就可以瞎搞了,用什么堆啊,染色问题啊都行,就是注意到这题用优先队列会T一个点,用手打堆快到飞起︿( ̄︶ ̄)︿,染色复杂度优化一个
江南乐
- 主要考察:数学推导
- 算法:SG函数+数学优化
- 突破口:发现SG函数的转移中有很多无用操作
- 正确思路: nim n i m 模型列出SG函数转移,考虑优化
这题一看就是 nim n i m 游戏的模型,根据蒟蒻的做题经验,这类题就应该求出每一堆石子的SG函数值,最后异或和求解
先列出伪SG转移,再考虑优化:
发现对于一堆大小为 x x 的石子如果分为堆,只有两种大小的子堆 ⌊xi⌋ ⌊ x i ⌋ 和 ⌈xi⌉ ⌈ x i ⌉ ,所以只用考虑这两种子堆的数量的奇偶性,因为如果为偶数,则两两异或抵消,如为奇数,则只用求一次即可
但这样应该只能过40~60分的样子,再考虑一个优化:做过莫比乌斯反演或模数和的就知道在被除数一定时可以用一个分块优化
代码在Ubuntu下,就懒得贴了