111 - DP LCS - degree1
1.题目链接:http://acm.uva.es/p/v1/111.html
2.解题思路:利用动态规划的LCS算法(算法链接),特别注意要看清题目,第一行输入为事件“envent”的数目,第二行为正确的事件"envent"的顺序,第三行为学生的输入
3.输入输出:sample的input、output就可以
4.代码
674 - DP 硬币- degree1
1.题目链接:http://acm.uva.es/p/v6/674.html
2.解题思路:动态规划的硬币问题(链接)。
3.输入输出:sample的input、output就可以
4.代码:
562 - DP 非典型背包- degree2
1.题目链接:http://acm.uva.es/p/v5/562.html
2.解题思路:这道题是一道非典型的DP题,我们不能直接利用DP得出答案,而是利用DP产生一个中间的结果,然后利用这个中间结果计算题目答案。
我们用DP思想首先产生一个judge数组,数组有0与1两个值,judge[i] = 0表示我们无法划分出i这个值,judge[i] = 1则相反表示利用一直的硬币可以划分出这个值。得到了judge数组后我们在对数组中所有值为1的数计算两堆硬币的差值,记录下这个差值,输出。
3.输入输出:sample
4.代码:
11137 - DP 硬币 - degree-1
1.题目链接:http://icpcres.ecs.baylor.edu/onlinejudge/external/111/11137.html
2.解题思路:典型动态规划硬币问题(链接),要特别注意循环接硬币问题时的顺序~见动态规划硬币算法~
3.输入输出:sample
4.代码
10534 - DP LIS - degree -2
1.题目链接:http://uva.onlinejudge.org/external/105/10534.html
2.解题思路:这道题主要是利用了LIS算法(LIS算法链接),要特别注意o(n^2)与o(nlogn)两种算法的不同实现,这道题用o(n^2)的方法
是超时的,只能使用o(nlogn)的方法。、
算法的思路是找到目标序列的中点,以这个中点为起点与中点的LIS是一样的。我们从input序列的中点每次分别向左与向右同时扩展一个点,计算LIS并且比较,如果相等并且超过以后点能生成的最大值则为答案。
3.输入输出:sample
4.代码:
10130 - DP 0-1背包问题 - degree -2
1.题目链接:http://uva.onlinejudge.org/external/101/10130.html
2.解题思路:这是一道典型的0-1背包问题,不过对于家庭里的每个成员都需要计算一次,然后将每个成员计算出的最大值累加输出。
3.输入输出:sample
4.代码: