摘要: 这道dp算是同类型dp中比较难的了,主要难点在于设置状态上; 如果像平时那样设置,必定爆空间没商量; 下面是一种思路: 先把输入进来的数据按h从大到小排序,这样就可以大大减少状态数, 然后设f[i][j][k]为前i本书第一个书柜厚度j,第二个书柜厚度k,第三个书柜厚度sum[i]-j-k的h最大值 阅读全文
posted @ 2016-09-06 22:07 CHADLZX 阅读(196) 评论(0) 推荐(0)
摘要: 背包dp入门,需要滚动数组; 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<cstring> 5 #include<algorithm> 6 #include<iomanip> 7 #include<cst 阅读全文
posted @ 2016-09-06 18:03 CHADLZX 阅读(269) 评论(0) 推荐(0)
摘要: 题意是一排路灯,每个路灯有耗电量,照明度,需要给这n个路灯按顺序分组,每组内的最大耗电量是电灯数乘t,可以选择关闭一些电灯,求最大的照明度; 这题思路很明显,预处理出一个g[i][j]表示i到j分为一组的最大照明度,f[i][j]表示前i个分为j组的最大照明度,f[i][j]=max(f[k-1][ 阅读全文
posted @ 2016-09-06 17:48 CHADLZX 阅读(321) 评论(0) 推荐(0)
摘要: 由于L的范围到了109,用普通dp做肯定是不成了; 可以观察到M的数量很小,dp在转移的过程中有大量的无用转移; 可以想到压缩范围,问题是如何压缩,观察若S=9,T=10时,能到达的点,9,10,18,19,20,27,28,29,30,36,37,38,39,40....80,81,82,83,8 阅读全文
posted @ 2016-09-06 13:19 CHADLZX 阅读(294) 评论(1) 推荐(0)
摘要: 这道题可以说是树形dp的入门题,也可以看成是一道检验【树】这个数据结构的题目; 这道题只能bfs,毕竟10^6的复杂度win下肯定爆栈了; 但是最恶心的还不是这个,实测用printf输出 用cout输出 题上也不提醒一下,无语啦; 1 #include<iostream> 2 #include<cs 阅读全文
posted @ 2016-09-06 12:30 CHADLZX 阅读(154) 评论(0) 推荐(0)