
Volume 5. Dynamic Programming
LeeBooL
这个作者很懒,什么都没留下…
展开
-
UVA 10911
记忆化搜索+状态压缩DP, 1 表示之前没有选择过#include #include #include #include #include using namespace std;#define MAXN (120) + 100#define INF 1e10;double dp[MAXN];int n, S, cnt;struct Point{ i原创 2014-11-30 15:24:35 · 484 阅读 · 0 评论 -
UVA 10617 区间DP
#include#include#define MAXN 65long long b[MAXN][MAXN];char s[MAXN];int n;void solve(){ int len = strlen(s); for(int i = 0; i b[i][i] = 1; for(int i = 1; i原创 2014-12-09 00:11:18 · 421 阅读 · 0 评论 -
uva 116 Unidirectional TSP
#include #include #include #include using namespace std;#define INF 0x1f1f1f1f#define LL long longLL dp[15][333];LL matrix[15][333];int path[15][333];#define min(a,b) (a) >原创 2014-12-06 21:19:17 · 340 阅读 · 0 评论 -
uva 531
#include #include #include #include #include using namespace std;char a[115][40];char b[115][40];int dp[115][115];int acnt, bcnt;bool flag = 0;void output( int i, int j){原创 2014-12-06 13:37:57 · 381 阅读 · 0 评论 -
Optimal Binary Search Tree
#include #include #include #include using namespace std;#define MAXN 300#define INF 0x1f1f1f1fint n;int f[MAXN];int dp[MAXN][MAXN];int sum[MAXN];void input(){ sum[0] = 0; for( int原创 2014-12-05 23:46:56 · 379 阅读 · 0 评论 -
UVA - 10626
记忆化搜索,不过要注意一句话As soon as I press the coke button (after having inserted sufficient amount of money), I receive a coke followed by the exchange (if any). 所以还有一种情况是先投入3个1 再投入一个10 ,这样找一个5原创 2014-12-04 14:47:11 · 358 阅读 · 0 评论 -
uva 10131
paht[] 记录路径, 递归书写路径#include #include #include #include #include using namespace std;#define MAXN 1100struct node{ int w, iq, id; bool operator ( const node &a) const {原创 2014-12-03 21:30:30 · 303 阅读 · 0 评论 -
UVA 10271
根NOI的一道题有点像 那道题只是问你怎么选择可以使得每一对的差的平方和最小, 先要从小到大排序, 我们要选的话一定要选相邻的这样平方和一定最小 DP[i][j] 表示 从i个筷子中选择J对, dp[i][j] = min( dp[i-1] [j], dp[i-2][j-1] + (len[i-1] - len[i]) ^2)但是这个题要求 选三个, 从小到大排的话状态转移方程 就原创 2014-12-03 14:49:20 · 391 阅读 · 0 评论 -
UVA 10891
dp[i][j]-> 从I 到J 的 最大差值sum[i] 前I 项和; 经典DP 模型变形 如果不是连续的选(只从某一端选一个)的话 dp[i][j] = sum[j] - sum[ i -1] - min( dp[i] [j - 1] , dp[i+1] [j]) ; 随意连续的话就是枚举i~j内每一个dp[i][k] ( 注意要从两个方向)原创 2014-12-02 19:13:57 · 357 阅读 · 0 评论 -
UVA - 10154 Weights and Measures
看了别人的题解才发现自己完全理解错了题意, 乌龟的重量是叠加的, 也就是说最下面的乌龟要承受它上方所有乌龟的重量这个题有点背包变形的意思,看大神讲题http://www.cnblogs.com/staginner/archive/2011/11/30/2268497.html 首先,我们不妨证明一下这个命题,如果一个力量小的乌龟可以驮着一个力量大的乌龟,那么这个力原创 2014-12-08 23:33:57 · 430 阅读 · 0 评论