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 · 462 阅读 · 0 评论 -
UVA 10617 区间DP
#include #include #define MAXN 65 long 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 · 397 阅读 · 0 评论 -
uva 116 Unidirectional TSP
#include #include #include #include using namespace std; #define INF 0x1f1f1f1f #define LL long long LL dp[15][333]; LL matrix[15][333]; int path[15][333]; #define min(a,b) (a) >原创 2014-12-06 21:19:17 · 315 阅读 · 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 · 358 阅读 · 0 评论 -
Optimal Binary Search Tree
#include #include #include #include using namespace std; #define MAXN 300 #define INF 0x1f1f1f1f int n; int f[MAXN]; int dp[MAXN][MAXN]; int sum[MAXN]; void input() { sum[0] = 0; for( int原创 2014-12-05 23:46:56 · 352 阅读 · 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 · 329 阅读 · 0 评论 -
uva 10131
paht[] 记录路径, 递归书写路径 #include #include #include #include #include using namespace std; #define MAXN 1100 struct node { int w, iq, id; bool operator ( const node &a) const {原创 2014-12-03 21:30:30 · 288 阅读 · 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 · 367 阅读 · 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 · 337 阅读 · 0 评论 -
UVA - 10154 Weights and Measures
看了别人的题解才发现自己完全理解错了题意, 乌龟的重量是叠加的, 也就是说最下面的乌龟要承受它上方所有乌龟的重量 这个题有点背包变形的意思, 看大神讲题http://www.cnblogs.com/staginner/archive/2011/11/30/2268497.html 首先,我们不妨证明一下这个命题,如果一个力量小的乌龟可以驮着一个力量大的乌龟,那么这个力原创 2014-12-08 23:33:57 · 402 阅读 · 0 评论