对自己来说这周的主要收获:
- 实在不知道为什么WA的题可能是PE了
- RE不一定是数组开小了,重点看看含递归的地方
- 要注意看看输出要求,取模什么的。调试找错前再读读题,可能哪里理解错了。
- 要熟悉一点套路吧,像有的题很多人一下就过的,那肯定不是很复杂的算法题啊,不要想复杂,像cf前三题如果开始想复杂了就换个思路(还有英语实在太差了,题目就读很久,而且还读错)。
USACO训练题:
一:1.5.1 Number Triangles
DP入门题,从下往上倒着DP,为了满足DP的无后效性和局部最优性。
二:1.5.2 Prime Palindromes
如果暴力做的话,那肯定是T的,因为数据范围a和b最大1e8
优化的话可以:
- 除了11,偶数位的回文数一定不是质数(我也才知道),这样如果b最多只用做到1e7
- 偶数不是质数
- 先把b以内的质数用欧拉筛筛出来
三:1.5.3 Superprime Rib
dfs(或者愿意的话可以打八重循环?)应该是比较显然的,但是优化就比较巧,因为每去掉尾部的一位,都要是质数,那第一位只能是2,3,5,7;之后的每一位都不能是2和5,就剪枝了很多了。
四:1.5.4 Checker Challenge
花时间最多,错了最多的题。如果其他题库都过了,zjut上wa了的话,每一行最后一个数字不要打空格。一般的做法就是普通的dfs加标记。对角线的话一条是line+i表示,一条line-i+n,“+n”是避免出现负数下标。考虑二进制优化,参考了江老师给的博客:[http://www.matrix67.com/blog/archives/266];然后还有个优化是棋盘的对称:
当n为偶数,第一行的棋子放在第 1...⌊n div 2⌋ 列的方案,与 第一行的棋子放在第 ⌊n div 2⌋+1 ..n 列的方案 数量相等且左右对称。
当 n 为奇数时,第一行的棋子放在第 1...⌊n div 2⌋ 列的方案,与 第一行的棋子放在第 ⌈n div 2⌉+1...n 列的方案 数量相等且左右对称。第一行的棋子还可以放在第⌈n div 2⌉列,那么,第二行的棋子又具有对称性。