
acm动态规划
文章平均质量分 60
JustSteps
这个作者很懒,什么都没留下…
展开
-
hdu 1203 乘法0.1背包
http://acm.hdu.edu.cn/showproblem.php?pid=1203先算法失败的概率,找出概率最小的 用1减去就是最大的概率,本来想着用dp[ i ][ j ]表示前 i 个用 j 元的最小概率 转移方程 dp[i][j]=min(dp[ i-1 ][ j ],,,dp[ i-1 ][ j-cost[i] ]*w[i] )感觉空间太大~~用滚动数组~~#inc原创 2013-02-04 12:18:40 · 596 阅读 · 0 评论 -
hdu2517 记忆化dp
棋盘分割Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 327 Accepted Submission(s): 162Problem Description将一个8*8的棋盘进行如下分割:将原棋盘割下一原创 2013-06-29 10:02:06 · 753 阅读 · 0 评论 -
hdu 4044 树形dp
GeoDefenseTime Limit: 12000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 417 Accepted Submission(s): 175Problem DescriptionTower defense is原创 2013-07-12 10:32:15 · 1075 阅读 · 0 评论 -
hdu1561树形dp 01背包
The more, The BetterTime Limit : 6000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 1 Accepted Submission(s) : 1Problem DescriptionACboy很喜欢玩一种战略原创 2013-07-11 15:05:38 · 1018 阅读 · 0 评论 -
hdu2196树形dp
刚开始连树形dp,~~树形dp不仅能连dp,还能练dfs.. 练建邻接表额~~基本完全参考别人~~~http://www.cnblogs.com/kuangbin/archive/2012/08/28/2659915.html#include #include #include #define MAXM 20000#define MAXN 20000#define I原创 2013-07-11 11:01:10 · 738 阅读 · 0 评论 -
hdu1011树形dp
Starship TroopersTime Limit : 10000/5000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 1 Accepted Submission(s) : 1Problem DescriptionYou, the leader原创 2013-07-11 13:22:02 · 707 阅读 · 0 评论 -
hdu 3339 最短路+01背包
In ActionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2557 Accepted Submission(s): 838Problem DescriptionSince 1945, whe原创 2013-04-09 23:11:37 · 1126 阅读 · 0 评论 -
hdu4526
找BUG找了好久呀~~都怪自己不注意细节~~思路:dp[i][n]表示从第i辆车开始n个人最小用的钱dp[i][n]=max(dp[i+1][n]+n*t[i+1],,,max(d+dp[i+1][n-l]+(n-l)*t[i+1]) (l点击打开链接#include #include #include #define inf 9999999using namespac原创 2013-03-25 22:28:29 · 760 阅读 · 0 评论 -
hdu 1494 dp
跑跑卡丁车Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1792 Accepted Submission(s): 585Problem Description跑跑卡丁车是时下一款流行的网络休闲游戏,你原创 2013-06-29 14:46:55 · 812 阅读 · 0 评论 -
hdu1913
ComputersTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 454 Accepted Submission(s): 155Problem DescriptionEverybody is fond原创 2013-06-29 15:42:36 · 990 阅读 · 0 评论 -
动态规划小结
这两天做了几道dp,回顾一下.1,http://acm.hdu.edu.cn/showproblem.php?pid=1024dp[i][j]表示前j个数字包括j 选i段划分出的最大值dp[i][j]=max(dp[i][j-1],max(dp[i-1][k]))+num[j]; 1编程中可以用滚动数组实现dp数组,而用pre[k]来表示前一阶段前k个数字最大值(可以不包括k)原创 2013-06-30 23:23:26 · 1117 阅读 · 0 评论 -
hdu 3561 Dp
A Simple ProblemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 464 Accepted Submission(s): 189Problem DescriptionThere's one原创 2013-06-29 11:52:27 · 905 阅读 · 0 评论 -
hdu3485水dp
http://acm.hdu.edu.cn/showproblem.php?pid=3485#include #include #include using namespace std;int dp[10005][4];int main(){ dp[2][0]=1; dp[2][1]=1; dp[2][2]=1; dp[2][3]=1; in原创 2013-06-29 19:10:12 · 686 阅读 · 0 评论 -
hdu4570 区间DP
http://acm.hdu.edu.cn/showproblem.php?pid=4570dp[i][j]表示i--j层最小的内存;初始条件:全压缩或全不压缩因为压缩不能超过20层,所以在小于20层时初始条件:dp[i][j]=min((sum[j]-sum[i-1])*2,num[i]*pow(j-i)*2);大于20层是只能不压缩dp[i][j]=(sum[j]-su原创 2013-06-30 15:11:05 · 996 阅读 · 0 评论 -
hdu3851
http://acm.hdu.edu.cn/showproblem.php?pid=3851dp[i]=max(dp[i-1],dp[i-t]+num[i]); dp[i]表示前i个时候最大分数(i时刻不一定要打怪兽)但是每天那么长 ,数组开不了,参考了下http://blog.sina.com.cn/s/blog_51cea4040100tlfc.htmlT只有100,可以求出每天原创 2013-06-30 09:39:41 · 871 阅读 · 0 评论 -
hdu 1574
RP问题Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 726 Accepted Submission(s): 216Problem Description在人类社会中,任何个体都具有人品,人品有各种不原创 2013-06-29 17:56:59 · 770 阅读 · 0 评论 -
hdu2476区间dp
http://acm.hdu.edu.cn/showproblem.php?pid=2476先是考虑将所有与目标字符串不相同的刷成目标串:dp[i][j]表示刷i-j区间,初始条件:dp[i][j]=dp[i+1][j]+1;对于k=(i+1...j )如果str[k]==str[i],则dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]原创 2013-06-30 13:49:03 · 2359 阅读 · 1 评论 -
hdu3455 dp
Leap FrogTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 548 Accepted Submission(s): 200Problem DescriptionJack and Jill play原创 2013-06-30 11:01:11 · 699 阅读 · 0 评论 -
【标记】hdu2159
http://acm.hdu.edu.cn/showproblem.php?pid=2159控制初始化,最后扫描一遍即可。#include #include#include#define inf 99999999using namespace std;int dp[200][200];int c[200];int v[200];int main(){ int n,原创 2013-03-25 16:04:31 · 677 阅读 · 0 评论 -
【标记】hdu2955 经典变形01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955本来转化成01背包 TLE~~况且浮点数不一定是两位小数 转换思想将总的钱数作为背包容量,逃跑成功率为价值,dp[i][j]=max(dp[i-1][j],dp[i-1][v-c[i]]+w[i]); dp[i]表示最大逃跑成功率, 初始化的时候d[0]=1;其余d[i]=0;即表示抢m钱时的最原创 2013-03-24 15:52:46 · 1171 阅读 · 0 评论 -
hdu4502
http://acm.hdu.edu.cn/showproblem.php?pid=4502dp[i]=max(dp[j]+dp[j+1][i]) j#include#include#includeusing namespace std;int a[105][105];int dp[105];int main(){ int t; scanf("%d",&t); for原创 2013-03-22 14:06:34 · 1128 阅读 · 0 评论 -
hdu4501
http://acm.hdu.edu.cn/showproblem.php?pid=4501这到题可以算一个三维的背包吧 ,之前把题义理解错了~以为以0积分或0钱那的就算免费的 原来不是~~可以拿任意价值的。看了别人的代码也学到了一点小技巧,比如dp[i][j]=max(dp[i-1][j],dp[i-1][j-c[i]])(这不是这道题的转移方程) 如果用滚动数组要注意内循环的顺序,但不原创 2013-03-22 13:37:08 · 1043 阅读 · 0 评论 -
hdu1224
Free DIY TourTime Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 4 Accepted Submission(s) : 2Problem DescriptionWeiwei is a software原创 2013-04-05 20:10:40 · 1419 阅读 · 0 评论 -
hdu4283
http://acm.hdu.edu.cn/showproblem.php?pid=4283dp[i][j]表示i到j区间最小dp[i][j]=min(dp[i+1][k]+dp[k+1][j]+(k-i)*a[i]+(sum[j]-sum[k])*(k-i+1)); i#include#include#include#define inf 99999999using n原创 2013-03-18 19:50:03 · 1569 阅读 · 0 评论 -
hdu1024
http://acm.hdu.edu.cn/showproblem.php?pid=1024状态转移方程 dp[i][j] 表示i段前j个数的最大数(包括a[j]的 所以最后的结果是max(dp[m][k]),1dp[i][j]=max(dp[i][j-1],dp[i-1][k])+a[j] i-1#include#include#include#define in原创 2013-03-18 15:30:53 · 2649 阅读 · 2 评论 -
hdu1158 动态规划
http://acm.hdu.edu.cn/showproblem.php?pid=1158状态转移方程:dp[i][j]=min(dp[i-1][k]+extra(k,j)+pay*k); a[i-1]这其中还有点细节要注意 当i==1时 dp[i][j]=dp[i-1][0]+extra(0,j)+p*k;extra (i,j) 是当人数从i变为j时需要的花费。#incl原创 2013-03-18 13:33:00 · 1441 阅读 · 0 评论 -
hdu1069
http://acm.hdu.edu.cn/showproblem.php?pid=1069dp dp[i]={max(a[i],a[i]+dp[j]),j/************************************************************************* > File Name: main.cpp > Author: huangshu原创 2013-03-13 16:11:09 · 2160 阅读 · 0 评论 -
hdu 2571
http://acm.hdu.edu.cn/showproblem.php?pid=2571#include #include using namespace std;int map[25][1005];int n,m;int maxx[25][1005];int main(){ int c; scanf("%d",&c); while(c--)原创 2013-03-04 21:49:59 · 604 阅读 · 0 评论 -
hdu2844 多重背包
http://acm.hdu.edu.cn/showproblem.php?pid=2844#include #include int w[105];int num[105];int m;int dp[100005];int max(int a,int b){ return a>b?a:b;}void ZeroOnePack(int v,int c){ in原创 2013-03-24 08:52:19 · 802 阅读 · 0 评论 -
hdu1059
#include#include#includeusing namespace std;int num[10];int m;int dp[60010];int max(int a,int b){ return a>b?a:b;}void CompletePack(int v,int c){ int i; for(i=c;i<=m;i++)原创 2013-03-24 10:22:09 · 1093 阅读 · 0 评论 -
【标记】hdu2546
http://acm.hdu.edu.cn/showproblem.php?pid=2546首先价钱最大的肯定是最后买的(当然钱数要大于5),于是:1当m=5时先把最贵的提出来,把钱数-5转换为01背包详细见代码#include #include #include #includeusing namespace std;int c[2005];int dp[2500];原创 2013-03-24 20:31:25 · 2621 阅读 · 0 评论 -
hdu1846
http://acm.hdu.edu.cn/submit.php?pid=1864注意细节#include #include#includeusing namespace std;int dp[4000000];int c[500];inline int max(int a,int b){ return a>b?a:b;}int main(){ doub原创 2013-03-24 22:17:12 · 742 阅读 · 0 评论 -
【标记】hdu 1114完全背包
#include#include#include#define inf 99999999using namespace std;int dp[100005];int c[100005],w[100005];int main(){ int t; scanf("%d",&t); for(;t--;) { int e,f; scanf("%d%d",&e,&f); i原创 2013-03-20 10:00:00 · 636 阅读 · 0 评论 -
【标记】 hdu3466 01背包变种
for (i=1; i for (j=m; j>=q[i]; j--) f[j]=max(f[j],f[j-p[i]]+v[i]);要保证动归方程无后效性j-p[i]一定要比j先算算i时,最小能算到q[i]-p[i]因此以q[i]-p[i]从小到大排序#include #include #include #include using namespace std;str原创 2013-03-25 14:28:04 · 1679 阅读 · 0 评论 -
hdu3732 01背包转化多重背包
http://acm.hdu.edu.cn/showproblem.php?pid=3732先用01背包 超时,,v,c的范围只有11个可以转化成多重背包。memset(dp,0,sizeof(0))~~~汗sizeof(0)wa了10次。。。#include #include #include using namespace std;int dp[200005];int n原创 2013-03-25 14:47:43 · 785 阅读 · 0 评论 -
hdu3496 二维费用背包
http://acm.hdu.edu.cn/showproblem.php?pid=3496 二维费用背包实现恰好m控制初始化即可#include #include #include #define inf 99999999;using namespace std;int dp[1100][110];int c[110];int v[110];int main(){原创 2013-03-24 16:34:03 · 803 阅读 · 0 评论 -
hdu1712 分组背包
http://acm.hdu.edu.cn/showproblem.php?pid=1712背包九讲的思路#include #include#includeusing namespace std;int dp[105];struct node{ int w,v;};node g[105][105];int main(){ int n,m; whi原创 2013-03-24 14:07:06 · 1389 阅读 · 0 评论 -
hdu3033 分组背包变形
http://acm.hdu.edu.cn/showproblem.php?pid=3033借鉴了别人的思路:设计状态dp[i][j]代表前i组容量为j的最大价值。由于一组里面有多个物品,所以状态转移可以是前一组少取一个,即dp[i-1][p-g[i][j].v]+g[i][j].w,也可以是当前组之前去过的少取一种,即dp[i][p-g[i][j].v]+g[i][j].w。原创 2013-03-24 11:02:36 · 1908 阅读 · 0 评论 -
hdu 4604 二分+dp
好 蛋疼 终于ac了~~实际就是求从某个点开始,的最长不降子序列和最长不升子序列之和 减去两个中重复的数字~#include #include #include using namespace std;const int inf=0x3f3f3f3f;int num[100005];int q1[100005];int q2[100005];int res[100005];原创 2013-07-24 10:16:56 · 1317 阅读 · 4 评论