摘要: 最优配对问题: 空间里有n个点P0,P1,…,Pn-1,你的任务是把它们配成n/2对(n是偶数),使得每个点恰好在一个点对中。 所有点对中两点的距离之和应尽量小。 dp方程: d[i][S] 点0~i 的最优匹配,S为状态集合。 d[i][S] = min(d[i][j],dist(i,j)+d[i 阅读全文
posted @ 2016-11-11 20:01 _yxg123 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题目链接 一共有三种状态: 1、d[u][0]:u是服务器,每个子结点可以是也可以不是。 2、d[u][1]:u不是服务器,但u的父亲是,u的子结点都不是服务器。 3、d[u][2]:u和u的父亲都不是服务器,u的子结点恰有一个是服务器。 三种状态的转移: 阅读全文
posted @ 2016-11-11 19:03 _yxg123 阅读(103) 评论(0) 推荐(0) 编辑
摘要: http://vjudge.net/problem/UVA-12186 d(u)表示让u给上级发信最少需要多少工人 阅读全文
posted @ 2016-11-11 11:45 _yxg123 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题目链接 树的最大独立集问题 d(u,0) 表示以u为根的子树中,不选u点能得到的最大人数 f(u,0)=1表示唯一,否则不唯一 d(u,1) 选u f(u,1)=1表示唯一,否则不唯一 阅读全文
posted @ 2016-11-11 11:23 _yxg123 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 题目链接 状态转移 d(i,j)表示子串S[i~j]至少需要加几个括号 递推写法 快 记忆化搜索 慢 阅读全文
posted @ 2016-11-10 21:22 _yxg123 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int INF = 1<<30; 5 const int maxn = 50+5; 6 const int maxt = 200+5; 7 int N,T,a[maxn] 阅读全文
posted @ 2016-11-10 18:04 _yxg123 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 题目链接 状态转移 d(i,j) 为切割小木棍i~j的最优费用 d(i,j) = min{d(i,k)+d(k+j)|i<k<j}+a[j]-a[i] 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 5 const int maxn = 5 阅读全文
posted @ 2016-11-08 19:46 _yxg123 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 6 const int INF = 1e9; 7 const int maxn = 1000+5; 8 in 阅读全文
posted @ 2016-11-08 18:35 _yxg123 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 1000+5; 5 int n,kase,vis[maxn][maxn],p[maxn][maxn],d[maxn]; 6 char s[maxn] 阅读全文
posted @ 2016-11-08 16:18 _yxg123 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题目链接 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 1000+5; 5 6 struct Lamp{ 7 int v,k,c,l; 8 bool operator<(const Lamp& rhs)c 阅读全文
posted @ 2016-11-08 15:52 _yxg123 阅读(85) 评论(0) 推荐(0) 编辑