poj 1065
贪心即可。题意就是问最少用多少个不下降序列覆盖整个序列。先排序,对于第\(i\)个数尽量往最佳的序列(刚好比第\(i\)个数小的,我是用set的upper_bound来找到这个数的)末添加。
时间复杂度\(O(n \cdot log n)\)。
poj 1631
最长上升子序列。
poj 3666
动态规划,先将高度离散化。设\(f(i,j)\)为把前\(i\)项变成不上升或不下降序列 且 第\(i\)座山丘高度为\(j\) 的代价。
易得转移方程。值得注意的是,最后的山丘高度只会是\(A\)数列其中的一个数,这个可以用贪心证明。
时间复杂度\(O(n \cdot log n + n ^2)\)。
poj 2392
先按\(a\)排序,这是为了使得dp有次序。
设\(dp(j)\)为达到高度\(j\)是否有可能。
时间复杂度\(O(K \cdot 40000)\)。
poj 2184
01背包裸题。
代码
我放在百度云盘了。点这里。
总结:
这只是初出茅庐的章节啊,就刷了这么久,近半的题都不能1A。嗟乎!