中午开始刷题,从动规最基本的部分重新看起,刷了五道题(有四道过了,一道poj崩溃还没judge)(后来听学长建议在另一个oj上交过了)
1.poj - 1458 Common Subsequence
最长公共子序列(lcs)模板题
2.poj - 3903 Stock Exchange
最长上升子序列(lis)模板题
维护一个非栈非队列(其实是单调队列...)的序列T即可,T【i】表示到当前位置为止,长度为i的lis末尾最小的数
3.poj - 3624 Charm Bracelet
0/1背包模板题,注意即使不能使用当前物品的状态也要转移,当然也可以用从大到小遍历的方法回避问题
4.POJ - 1384 Piggy-Bank
完全(无限)背包模板题,没啥需要注意的
不过有两个方法:一是直接做,通过从小到大的遍历顺序实现同一物品的无限次使用,二是利用二进制转换成单个物品
5.POJ 1276 Cash Machine
多重背包模板题,即物品具有有限个数,此时仍可以利用二进制转换,但注意把个数进行转换时,要覆盖小于等于它的所有二进制数,而不是转换成二进制
6.
滑雪
记忆化搜索,注意INF不要恰好开到上限否则做加法时会溢出
还有初始化不要把Map[0][i]=Map[n+1][i]=INF;
写成Map[0][i]=Map[n+1][0]=INF;
...