这道题很容易想到状压dp,首先跑一遍floyd求出各个点之间的最短路,然后dp。
状态是dp[i][j]表示状态为i(二进制,表示是否访问过每个点),在位置j时的最短路。
转移就是:dp[i][j]=min(dp[i-(1<<v)][u]+grid[u][v],dp[i][j]),其中v是当前位置,u是上一个状态的位置。
需要注意的是dp的顺序应该是由含1的个数少的二进制到1的个数高的二进制;由于最开始就在0位置,所以dp[(1<<n)-1][0]不可能被转移到,所以最后的答案应该是ans=min(ans,...
分类:
其他好文 时间:
2014-12-26 20:22:01
阅读次数:
260
0/1背包问题:
现有n种物品,对1i,价值为正整数Vi,背包能承受的最大载重量为正整数W,现要求找出这n种物品的一个子集,使得子集中物品的总重量不超过W且总价值尽量大。(注意:这里对每种物品或者全取或者一点都不取,不允许只取一部分)
根据问题描述,可以将其转化为如下的约束条件和目标函数:
于是,问题就归结为寻找一个满足约束条件(1),并使目标函数式(2)达到最大的解向量...
分类:
其他好文 时间:
2014-12-24 00:06:33
阅读次数:
349
题目描述:
每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”。参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个bg定义一个“快乐度”。现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最大的快乐度。
例如有4场bg:
第1场快乐度为5,持续1小时,发...
分类:
其他好文 时间:
2014-12-22 11:17:10
阅读次数:
221
硬币找零
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资。
我们应该注意到,人民币的硬币系统是 100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,
0.02,0...
分类:
其他好文 时间:
2014-12-09 19:45:34
阅读次数:
140
题目大意:给出一排东西,现在要建造防御塔,在i处建造防御塔的花费是cost[i],所有东西的花费是他它距离右侧最近的防御塔的距离。求最小花费。
思路:很简单的斜率优化。DP方程:f[i] = f[j] + (i - j - 1) * (i - j) / 2 + cost[i]
然后简单整理一下会发现f[j] + (j + 1) * j / 2 = f[i] - i ^ 2 + i * ...
分类:
其他好文 时间:
2014-12-02 16:41:15
阅读次数:
166
多种方法,我用DP做的。
我当成的 最长下降子序列做的。 问了下其他人,有树形DP的,有差分约束用最短路的。
还有当作 二维的背包问题的。
最长单调子序列,长宽高 x,y,z 分别枚举成六个。然后排序,找最长单调子序列即可。
#include
#include
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-11-27 10:48:57
阅读次数:
228
题目:如下对应关系'A' -> 1'B' -> 2...‘Z’ -> 26现在给定一个字符串,返回有多少种解码可能。例如:Given encoded message"12", it could be decoded as"AB"(1 2) or"L"(12).思路:动态规划。dp[i]表示s[0,....
分类:
其他好文 时间:
2014-11-23 00:27:03
阅读次数:
237
LCS问题,基础DP。
让我很忧伤的WA了很多次。只是一个LCS问题,需要记录一下路径。
自己的想办法记录path出错,最后只好用标记。
没有什么优化,二维数组,递归打印,cin.eof() 来识别 end of file 标识。
至于单词用map 映射的。其实也用不着,直接二维string或者 二维char 然后strcmp 也行。
Special Judge
...
分类:
其他好文 时间:
2014-11-18 14:46:41
阅读次数:
196
动态规划,Dynamic programming,不是Dynamic planning ...将问题分成若干子问题,前面的解为后面的解所用,注意逆向推倒,找出递推公式,经典的01背包问题,晚点实现一下,这里搞一个LeetCode上面的题放着记录一下神马求二项式系数,斐波拉契...都可以用动态规划来实...
分类:
其他好文 时间:
2014-11-13 16:02:06
阅读次数:
136
01背包。 不仅要求出最大的。还要求出最大的由那些构成。
多定义一个path[]就可以了。
应该是 Special Judge
我样例最后一组输出的是 43 2 sum:45
样例输出的是 4 10 12 9 8 2 sum:45
不过也AC了。
#include
#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2014-11-11 16:43:49
阅读次数:
209