DP
2845xlc
这个作者很懒,什么都没留下…
展开
-
spoj 345
DP 想了好久 还是看了一下题解。。。。 f[i][j]表示i到j全部合并后的最小花费,f[i][j] = min{f[i][k]+f[k+1][j]+d[i][k]*d[k+1][j]} (i #include #include #include #include using namespace std;#define INF 100000000int f[101][10原创 2013-08-19 11:13:46 · 800 阅读 · 0 评论 -
uva 10304
最优二叉查找数 看了这位大牛 的博客 http://www.cnblogs.com/lpshou/archive/2012/04/26/2470914.html/************************************************************************* > Author: xlc2845 > Mail: xlc2845原创 2013-11-13 07:31:52 · 636 阅读 · 0 评论 -
集合上的动态规划---最优配对问题(推荐:*****) // uva 10911
/*提醒推荐:五星刘汝佳《算法竞赛入门经典》,集合上的动态规划---最优配对问题题意:空间里有n个点P0,P1,...,Pn-1,你的任务是把它们配成n/2对(n是偶数),使得每个点恰好在一个点对中。所有点对中两点的距离之和应尽量小。状态:d(i,S)表示把前i个点中,位于集合S中的元素两两配对的最小距离和状态转移方程为:d(i,S)=min{|PiPj|+d(i-1,S-{i}-转载 2013-11-14 13:46:28 · 653 阅读 · 0 评论 -
uva 10626
dp 记忆化搜索3个1元和1个10元的情况不能少#include #include #include #include #include #include #include #include #include #include #include #include #define maxn 20010#define INF 0x7fffffff#define in原创 2014-01-16 15:49:20 · 592 阅读 · 0 评论 -
uva 10617
当s[i] = s[j] dp[i][j] = 1+dp[i+1][j-1]+dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1] = 1+dp[i][j-1]+dp[i+1][j]当s[i] != s[j] dp[i][j] = dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]答案超int#include #include #inclu原创 2014-01-16 12:50:48 · 596 阅读 · 0 评论 -
uva 10313
递推 参考了别人的解法 dp[i][j] 表示价值为i用j个硬币可以有多少种方法 dp[j][k] += dp[j-i][k-1] 意思是多加一枚价值为i的硬币,加上价值为j-i用k-1个硬币的总数#include #include #include #include #include #include #include #include #include原创 2014-01-16 13:42:39 · 631 阅读 · 0 评论 -
uva 10912
dp 记忆化搜索#include #include #include #include #include #include #include //#include #include #include #include //#include #define maxn 10010#define INF 0x7fffffff#define inf 10000000#de原创 2014-01-17 14:52:09 · 558 阅读 · 0 评论 -
uva 10128
动归转移方程 :dp(i, j, k) = dp(i – 1, j, k) * (i – 2) + dp(i – 1, j – 1, k) + dp(i – 1, j, k – 1)i表示此时排第i个人 ;j表示从左可以看到j个人; k 表示从右可以看到k个人;巧妙的是将要排的第i个人看作是最矮的 所以当这个人站在队列的中间i-2个位置不会影响j和k而站在最左边j要加1 站在最右边原创 2014-02-25 20:04:25 · 703 阅读 · 0 评论 -
hdu 2196
树形dp本文出自 http://blog.csdn.net/shuangde800题目传送门题意:给出一棵树,求离每个节点最远的点的距离思路:把无根树转化成有根树分析,对于上面那棵树,要求距结点2的最长距离,那么,就需要知道以2为顶点的子树(蓝色圈起的部分,我们叫它Tree(2)),距顶转载 2014-02-28 20:10:01 · 649 阅读 · 0 评论 -
uva 10859
刘书例题 树形dp#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 200010#define INF 0x7fffffff#define inf 10000原创 2014-03-05 18:17:06 · 608 阅读 · 0 评论 -
uva 11825
刘书上例题 关于集合的动态规划#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 200010#define INF 0x7fffffff#define i原创 2014-03-05 17:53:22 · 699 阅读 · 0 评论 -
hdu 1171
求能装入大小为sum/2的背包的最大价值#include #include #include #include #include #include #include #include #include #include #include #include #include #define maxn 1005#define INF 0x7fffffff#define原创 2014-05-14 09:36:02 · 550 阅读 · 0 评论 -
hdu 4971
不会最大流 记忆话搜索过的原创 2014-10-02 15:24:10 · 507 阅读 · 0 评论 -
ZOJ 3802
状态压缩的DP压缩的状态是一个递减序列 如果序列f原创 2014-11-15 19:21:24 · 764 阅读 · 1 评论 -
uva 10651
DP 主要是位运算的运用 因为只有12位 用一个数字代表一种装态 记忆化搜索 节约时间/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 20原创 2013-11-06 14:28:21 · 714 阅读 · 0 评论 -
uva 10910
简单dp/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年11月05日 星期二 20时05分30秒 ***************原创 2013-11-05 20:24:59 · 798 阅读 · 0 评论 -
zoj 3725
题意:n个格子排成一条直线,可以选择涂成红色或蓝色,问最少 m 个连续为红色的方案数。解题思路:应该是这次 ZOJ 月赛最水的一题,可惜还是没想到。。。dp[i] 表示前 i 个最少 m 个连续为红色的方案数。转移时,分类讨论:1、前 i-1 个已经满足这个性质,那么,第 i 个随意涂色,方案数为 dp[i-1] * 2 。2、前 i转载 2013-08-19 19:18:30 · 713 阅读 · 0 评论 -
spoj 39
DP 完全背包问题 的 d[i] = min(d[i], d[i-w]+p) #include #include #include #define INF 100000000using namespace std;int d[10010];int main(){ int t,n,m,wei; scanf("%d",&t); while(t--)原创 2013-08-20 16:08:09 · 574 阅读 · 0 评论 -
spoj 394
每段可以连续的串的可能性是个Fibonacci数列 但是直接dp更好吧~~#include #include using namespace std;char a[5010];int main(){ while(scanf("%s",a) && strcmp(a, "0")) { int len = strlen(a), cur = 1;原创 2013-08-09 12:26:13 · 648 阅读 · 0 评论 -
spoj 364
动规 f[i][j]表示第i到第j个数能取到的最大值 e[i][j]表示最小值 .......#include #include using namespace std;char a[110];int d[110];bool c[110];long long f[110][110],e[110][110];int main(){ int t; scanf("原创 2013-08-09 15:11:18 · 617 阅读 · 0 评论 -
uva 11151
求最长回文串 就是将字符串翻转后求最长公子列.....#include #include #include #include using namespace std;char str[1010];char re[1010];int f[1010][1010];int main(){ int t; scanf("%d",&t); getchar()原创 2013-08-15 11:09:10 · 614 阅读 · 0 评论 -
uva 10739
dp 只有三个操作 当str[i] != str[j] 时 dp(i, j) = min(dp(i+1, j), dp(i+1, j-1), dp(i, j-1))#include #include #include #include #include using namespace std;char str[1010];int f[1005][1005];int n;i原创 2013-08-15 19:39:17 · 583 阅读 · 0 评论 -
hdu 1024
参考了一下 http://moxi466839201.blog.163.com/blog/static/18003841620110220374942/滚动数组 状态转移方程不太好理解 .... f[i][j]=max(f[i][j-1],f[i-1][j-1])+a[j];#include#include#include#define maxn 1000010#define原创 2013-08-30 18:19:59 · 565 阅读 · 0 评论 -
uva 10271
DP 状态转移方程 dp[i][j] = min(dp[i-1][j], dp[i-2][j-1] + w)) dp[i][j] 指的是前i个筷子组成j组所花费的最小值 考虑第i个筷子是否参与第j组 (筷子从大到小排序)#include #include #include #include #define MAX 100000000using namespace std;原创 2013-10-07 09:51:18 · 579 阅读 · 0 评论 -
hdu 3646
DP 状态转移方程还是比较容易想到 关键问题是当前要攻击的怪兽的血量dp[i][j] = max(dp[i-1][j]+第i只鸟不使用double可杀死的怪兽数, dp[i-1][j-1]+第i只鸟使用double可杀死的怪兽数)dp[i][j]指前i只鸟使用j次double可杀死的怪兽数要将m更新为m,n中的较小值 因为最多使用n次double 因为这个一直wa#inc原创 2013-10-10 17:36:36 · 736 阅读 · 0 评论 -
hdu 1176
简单DP 类似于在一个矩形中求最长路径/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月24日 星期四 14时38分17秒原创 2013-10-24 15:20:49 · 533 阅读 · 0 评论 -
uva 437 hdu 1069
dp 将石块按三个面存入队列 按底面积排序 dp就最大高度 按嵌套矩形最长路做做法#include #include #include #include using namespace std;struct tone{ int x,y,z; void t(int a, int b, int c) { x = a; y原创 2013-07-30 16:47:53 · 616 阅读 · 0 评论 -
uva 10306
二维的完全背包 /************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月22日 星期二 13时04分26秒 **********原创 2013-10-22 14:22:05 · 164 阅读 · 0 评论 -
uva 10306
有点不同的完全背包问题 但思路还是一样的/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月22日 星期二 13时04分26秒原创 2013-10-22 14:29:24 · 679 阅读 · 0 评论 -
ZOJ 3791
dpdp[j]表示与目标状态有j位不同的方法shu原创 2014-11-22 20:19:10 · 541 阅读 · 0 评论