随笔分类 -  动态规划

1 2 3 4 5 6 下一页

hdu 3907
摘要:经典的树形dp,dp[y][z], 以y为根的子树,祖先z做副本。代码:#include <iostream>#include<fstream>using namespace std;struct e{ int data; int weight; e *next;};e edge[1001];int n;void add(int s,int t,int weight){ e *p=new e; p->data=t; p->next=edge[s].next; p->weight=weight; edge[s].next=p;}int s[1001],q 阅读全文

posted @ 2011-08-26 21:04 宇宙吾心 阅读(224) 评论(0) 推荐(0)

hdu 2825
摘要:ac自动机的dp 阅读全文

posted @ 2011-08-26 20:37 宇宙吾心 阅读(260) 评论(0) 推荐(0)

hdu 2836
摘要:离散+树状数组+dp 阅读全文

posted @ 2011-08-26 20:21 宇宙吾心 阅读(171) 评论(0) 推荐(0)

hdu 3851
摘要:压缩的思想值得学习。压缩处理函数:void solve(__int64 t,__int64 P){__int64 k;if (t>T*2)k=(t-T*2)/T;else k=0;must+=k*P;for (int i=0;i<t-k*T;i++)d[++n]=P;} 阅读全文

posted @ 2011-08-26 16:32 宇宙吾心 阅读(232) 评论(1) 推荐(0)

动态规划
摘要:进一步学习:插头dp斜率dp 阅读全文

posted @ 2011-08-26 15:53 宇宙吾心 阅读(170) 评论(0) 推荐(0)

hdu 3831
摘要:神题,经典dp关键是状态的表示。f[i][j][k]原串后i个字符,与目标后j个字符做匹配,在这之前最近一次发生的后缀操作为“置k”,k=52时表示不置后缀 阅读全文

posted @ 2011-08-26 15:43 宇宙吾心 阅读(259) 评论(0) 推荐(0)

hdu 3709
摘要:按位dp,很少做这种题。 阅读全文

posted @ 2011-08-26 13:27 宇宙吾心 阅读(283) 评论(0) 推荐(0)

hdu 3507
摘要://====================================================================//Name:hdu 3507 Print Article//Author:zhxfl//copyright:http://blog.sina.com.cn/s/articlelist_1736064691_0_1.html//Description:斜率优化dp//Algorithm :。。。。//dp[i]= min{ dp[j]+ ( sum[i]- sum[j] )* ( sum[i]- sum[j] )+ m } (i< j );//假设 阅读全文

posted @ 2011-08-25 23:03 宇宙吾心 阅读(562) 评论(0) 推荐(0)

hdu 2993
摘要:斜率dp,不懂! 阅读全文

posted @ 2011-08-25 22:31 宇宙吾心 阅读(193) 评论(0) 推荐(0)

hdu 2829
摘要:四边形优化dp 阅读全文

posted @ 2011-08-25 20:16 宇宙吾心 阅读(199) 评论(0) 推荐(0)

hdu 2296
摘要:ac自动机上的dp。 阅读全文

posted @ 2011-08-25 19:59 宇宙吾心 阅读(326) 评论(1) 推荐(0)

hdu 1074
摘要:状态压缩dp 阅读全文

posted @ 2011-08-15 21:39 宇宙吾心 阅读(133) 评论(0) 推荐(0)

hdu 2955
摘要:看似01背包,但限制数非整形,稍微转化以下状态即可。 阅读全文

posted @ 2011-08-15 20:30 宇宙吾心 阅读(120) 评论(0) 推荐(0)

hdu 2159
摘要:二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。费用加了一维,只需状态也加一维即可。设f[i][v][u]表示前i件物品付出两种代价分别为v和u时可获得的最大价值。状态转移方程就是:f[i][v][u]=max{f[i-1][v][u],f[i-1][v-a[i]][u-b[i]]+w[i]}如前述方法,可以 阅读全文

posted @ 2011-08-15 16:08 宇宙吾心 阅读(514) 评论(0) 推荐(0)

hdu 1561
摘要:树形dp题 阅读全文

posted @ 2011-08-14 21:41 宇宙吾心 阅读(119) 评论(0) 推荐(0)

hdu 2639
摘要:第K优解问题其基本思想是将每个状态都表示成有序队列,将状态转移方程中的max/min转化成有序队列的合并。这里仍然以01背包为例讲解一下。首先看01背包求最优解的状态转移方程:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。如果要求第K优解,那么状态f[i][v]就应该是一个大小为K的数组f[i][v][1..K]。其中f[i][v][k]表示前i个物品、背包大小为v时,第k优解的值。“f[i][v]是一个大小为K的数组”这一句,熟悉C语言的同学可能比较好理解,或者也可以简单地理解为在原来的方程中加了一维。显然f[i][v][1..K]这K个数是由大到小排 阅读全文

posted @ 2011-08-14 21:14 宇宙吾心 阅读(1161) 评论(0) 推荐(1)

hdu 3535
摘要:怎么处理至少一次,至多一次?有点猫腻的背包。 阅读全文

posted @ 2011-08-14 21:01 宇宙吾心 阅读(174) 评论(0) 推荐(0)

hdu 3449
摘要:经典的dp题。这类问题要用到两个数组,dp[0][i]表示i块钱可以买到的最大价值,dp[1][i]表示考虑到当前盒子时,i块钱可以买到的最大价值,首先dp[0]置为0,枚举全部的盒子,dp[1]置为-oo表示买不到,更新的转移可以从dp[0]转移也可以从dp[1]转移,从dp[0]转移表示你还没有买盒子,要附加上盒子的价格,dp[1]表示你买过盒子了,就直接转移就可以了,转移方程如下:dp[1][k]=max(dp[1][k],dp[1][k-c[i][j]]+v[i][j],dp[0][k-c[i][j]-p[i]]+v[i][j]); dp[0][j]=max(dp[0][j],dp[1 阅读全文

posted @ 2011-08-14 20:06 宇宙吾心 阅读(256) 评论(0) 推荐(0)

hdu 3276
摘要:难题啊!二分+优先队列+dpd[i]=max(sum[i]-sum[j]) (i-y<j<i-x)优先队列处理 阅读全文

posted @ 2011-08-12 17:08 宇宙吾心 阅读(210) 评论(0) 推荐(0)

hdu 3311
摘要:难题一个,状态dp。有待研究。 阅读全文

posted @ 2011-08-11 15:37 宇宙吾心 阅读(176) 评论(0) 推荐(0)

1 2 3 4 5 6 下一页

导航