上一页 1 ··· 63 64 65 66 67 68 69 70 71 ··· 73 下一页
摘要: 题目:http://poj.org/problem?id=2228 dp[i][j][0/1]表示前i小时中第j小时睡(1)或不睡(0)的最优值; 注意第一个小时,若睡则对最终取结果有要求,即第n个小时必须睡,所以据此DP两遍; 可以开滚动数组,否则容易MLE。 代码如下: 阅读全文
posted @ 2018-03-19 22:55 Zinn 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3585 二次扫描与换根法,一次dfs求出以某个节点为根的相关值,再dfs遍历一遍树,根据之前的值换根取最大值为答案。 代码如下: 阅读全文
posted @ 2018-03-19 22:46 Zinn 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1179 区间DP,值得注意的是有负值,而且有乘法,因此可能会影响最大值; 注意memset中写-1仅仅是-1,-2才是一个很小的负数; 最后找mxx时也要注意可能最大是负值,因此不能随便给mxx赋成0或-1之类。 代码如下: 阅读全文
posted @ 2018-03-15 23:53 Zinn 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1742 贪心地想,1、如果一种面值已经可以被组成,则不再对它更新; 2、对于同一种面值的硬币,尽量用较少硬币(一个)更新,使后面可以用更多此面值硬币。 代码如下: 阅读全文
posted @ 2018-03-15 22:20 Zinn 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目:http://www.joyoi.cn/problem/tyvj-1061 DP记录状态为当前任务时不在此任务位置上的两个人的位置(因为一定有一个人在此任务位置上); 不妨设初始位置p[0]=3,另外两个人在1,2位置上; 每次考虑上一任务的哪个人来到这一任务位置,更新; 开滚动数组以防止爆空 阅读全文
posted @ 2018-03-15 13:10 Zinn 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1015 DP的第一维是选了几个人,第二维是当前D与P的差值,而值存的是当前D与P的和; 技巧1:通过平移避免负角标,即代码中的fix; 技巧2:做完DP后找出最小的差的绝对值时,如下的那一小段代码很有效率; 技巧3(*):记录路径——①更新 阅读全文
posted @ 2018-03-15 00:19 Zinn 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=3666 很普通的DP,离散化(sort)一下即可; mn的求法很不错(比我原来开了mn[]……简洁)。 代码如下: 阅读全文
posted @ 2018-03-13 23:02 Zinn 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2279 书上的DP做法会爆内存,尝试写了一个,过了样例。 转载: 代码如下: #include<iostream> #include<cstdio> #include<cstring> #define ll unsigned long lo 阅读全文
posted @ 2018-03-13 22:41 Zinn 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2127 LCIS,注意存储路径的方法。 代码如下: //void print(ll sx,ll sy)//{// if(f[sx][sy]==0)return;// ll xx=prex[sx][sy];// ll yy=prey[sx][ 阅读全文
posted @ 2018-03-10 11:33 Zinn 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目:http://codevs.cn/problem/2189/ 通过增加一维,将最优性转化为可行性。 代码如下: 阅读全文
posted @ 2018-03-10 09:24 Zinn 阅读(184) 评论(0) 推荐(0) 编辑
上一页 1 ··· 63 64 65 66 67 68 69 70 71 ··· 73 下一页