POJ1818
贪心构造。首先题目显然满足单调性,可以采用二分答案。为了让结果尽可能更优,我们每次对p都尽可能让它与(p-k)进行对抗,但是用DFS的话可能导致本应用几个较大的数,但是用了一个小的,导致别的更小的数被封死了,所以我们采用BFS来完成。每次只要看枚举的ans前的数是不是都用上了,取数时可以用并查集优化使复杂度到O(1)。
POJ1992
简单DP,但是数据组数很多,fillchar会超时,只要每次将需要用的数清零即可。f[i,j]在纵方向上只会是f[i-1,j]+1或0,所以只用一维数组然后滚动即可。
POJ2110
我的方法是枚举下限,再用SPFA求出最小的答案。更优的方法是二分答案,枚举路上的最小高度再BFS,这样复杂度能控制在n^2*log(n)。
POJ1699
枚举全排列然后计算花费。由于常数很大,可以将cost[i,j](j接在i后的花费)提前处理出来。题目有bug,重叠部分必须是前一个串的后缀。
POJ1184
BFS优化。BFS状态数很多,常数一大就会超时,所以采用双向BFS来缩减常数。同时从开头结尾BFS,哪个队列状态数少拓展哪个队列,搜到做过的状态就输出答案。也可以采用状态压缩搜索,将交换位置和加减割裂来看,先搜索出到每一种排列需要多少步,再计算加减得到最后答案需要多少步。由于只有光标经过过的位置可以改变,所以还要记录有哪些位置经过过。状态数:6!*(2^6)*6,光标经过的位置的情况还可以手算一下,一共有10种情况,这样会更优化。
POJ2446
矩阵分奇偶点求最大匹配。这种横竖方向木板覆盖的题目一概尽快想到这种模型。
浙公网安备 33010602011771号