想破脑壳也想不出的难问题
PoemK
这个作者很懒,什么都没留下…
展开
-
poj 2152 Fire 树形dp
看题解,归纳一下做法吧:best[x]:表示以x为根的子树结点全部符合要求(在规定距离内有消防站)的最小花费。dp[x][y]:表示x以y作为自己的消防站,且x的子树结点全部符合要求的最小花费。那么处理每一个结点x时,先枚举和x距离不超过D[x]的点i,然后这些点可以作为x的消防站,之后枚举x的子结点y,dp[x][i]=W[i]+sum( dp[y][i]-W[i],b原创 2016-04-08 19:56:01 · 320 阅读 · 0 评论 -
uva 1336 - Fixing the Great Wall 修缮长城
比较难想的动态规划uva 1336 - Fixing the Great Wall 修缮长城原创 2016-02-01 23:00:50 · 828 阅读 · 0 评论 -
uva 10559 方块消除
dp[le][ri][k]表示区间[le,ri]并且右边还有k个和 ri位置相同颜色的方块 的最优解。转移时间O(n),状态O(n^3),时间复杂度O(n^4)(一般来说n为200,这样可能会超时),用记忆化搜索很多状态不会达到,可过。/**========================================== * This is a solut原创 2016-02-20 16:25:26 · 686 阅读 · 0 评论 -
uva 1628 送披萨
题目:点我解法:送披萨,开一个dp[maxn+3][maxn+3][2][maxn+3]大小的数组,用dp[le][ri][k][need]表示区间[le,ri]内的顾客已经不用送了(送到了或者决定不送了),如果k=0,表示现在正在le点处,如果k=1,表示在ri点处,还需要送need个顾客。/**==============================原创 2016-02-20 14:58:42 · 810 阅读 · 0 评论 -
UVA - 1228 Integer Transmission 整数传输 递推
题目约制1:同是1或者同是0的数字其相对位置不变。 求最大最小可用贪心求解。 简化题目:若延迟为d,从左往右数第i个数字到达的时间范围可以记为[i,i+d],题目说是[i+1,i+d+1],不影响结果。约制2(书上说的,实际解题我的代码没有用到,但这是对的):假若有n位数字,到达的时间是[1,n+d],我们可以修改为[1,n]不原创 2016-02-18 15:26:49 · 908 阅读 · 1 评论 -
UVA - 1439 Exclusive Access 2 独占访问2
问题转化:给出1个最多结点数为15的图,然后给出一些无向边,现在需要给这些边/**========================================== * This is a solution for ACM/ICPC problem * * @source:uva 1439 Exclusive Access 2 * @type: dp *原创 2016-02-17 18:50:42 · 944 阅读 · 0 评论 -
UVA - 12170 Easy Climb 轻松爬山 单调队列优化DP
题意:输入正整数d和n个正整数h1,h2,...,hn。可以修改除了h1和hn的其他数,要求修改后相邻两个数之差的绝对值不超过d,且修改费用最小。设h1修改后的值为hi',则修改费用为|h1-h1'|+|h2-h2'|+...+|hn-hn'|;无解输出impossible,有解输出最小费用。(2 ≤ n ≤ 100)(0 ≤ d ≤ 10^9)(0 ≤ hi ≤ 109)原创 2016-02-16 22:10:39 · 811 阅读 · 0 评论 -
UVA - 12099 The Bookcase 书架
背包思想,书有宽度,书也有高度,这里宽度是典型的体积。因为分三层,为了方便考虑,给与约制:第一层的高度>第二层>第三层。(将书按从大到小的顺序排列)接下来进行分阶段的动态规划,每本书有三种选择:放在第一层,放在第二层,放在第三层。dp[2][v2][v3],滚动数组,v2表示第二层的数宽度和,v3表示第三层的书宽度和。因为所有书的宽度和一定,我们可以方便的计算出第一层的宽度和。原创 2016-02-15 21:38:17 · 711 阅读 · 0 评论 -
uva 1204 Fun Game 有趣的游戏 字符串集合的动态规划
不得不说,此题很难,不得不说,我很渣,看了题解,自己写代码,不但写了一大堆,后来WRONG ANSWER还找不到错了。只好看紫书的代码。。。发现好多实用的函数的写法reverse(tmps[i].rev.begin(),tmps[i].rev.end());if(tmps[j].s.find(tmps[i].s)!=string::npos || tmps原创 2016-02-15 14:14:37 · 1195 阅读 · 0 评论 -
uva 1380 - A Scheduling Problem 一个调度问题 好难的动态规划
想不出来啊!!!,紫书上写的很清楚。1.利用题目给出的图论定理,先不考虑无向边,假如图中有向链的最大长度为K,那么答案为K+1或K+2(注意是K链的长度,答案是链包含点的个数)。2.考虑答案是否能为K+1,否则为K+2,即考虑给无向边定向,定向之后能否使最长链不超过K?进行动态规划来考虑:对于每一个结点in[x] 表示: 在定向后最长链不超过K的前提下,原创 2016-02-09 22:07:41 · 1267 阅读 · 0 评论