动态规划
Ac-try
这个作者很懒,什么都没留下…
展开
-
HDU--1087 Super Jumping! Jumping! Jumping!
DescriptionNowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.原创 2014-11-17 11:45:38 · 304 阅读 · 0 评论 -
HDU -- 1203 I NEED A OFFER!
题目简述:Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。他可以收到至少一份offer的最大概率。总体思路:求至少收到一份offer的最大概率,可以反过来求没有收到offer的概率,再原创 2014-12-01 20:23:40 · 325 阅读 · 0 评论 -
HDU -- 1114 Piggy-Bank
这是一道完全背包题,也是我的做的第一个完全背包题。这道题描述的是 给出一个小猪储钱罐的空的重量,被钱币装满的重量,给出几种不同硬币的价值 重量,要用这些硬币恰好装满小猪储钱罐,每中硬币可以使用多个,求出恰好装满储钱罐的钱币的最小价值如果不能恰好装满就输出这是不肯能的,否则输出钱币的价值。很容易让人想到用一个二维数组dp[i][j]来描述用i种钱币恰好装满重量为j的储钱罐的最小价值。要注意是恰好装满原创 2014-11-29 21:47:02 · 366 阅读 · 0 评论 -
hdu--2041 超级楼梯
#includeint cnt[50];int main(){ int n; while(scanf("%d",&n)==1){ for(int k=0;k<n;k++){ int m; scanf("%d",&m); cnt[0]=1; cnt[1]=1;原创 2014-11-06 01:15:22 · 345 阅读 · 0 评论 -
POJ--1664 放苹果
Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 Output对输入的每组数据M和N,用一行输出相应的K。Sample Input17 3Sample Output8原创 2014-11-24 22:06:55 · 402 阅读 · 0 评论 -
HDU--2602 Bone Collector
给出骨头的个数,及每个骨头的价值,体积,背包的容量,求该该背包容量下能装的最大价值;这是一道传统的01背包题,用dp[i][j]表示把前i个物品装到容积为j的背包中的最大容量,那么对第i个物品有两个决策,装或不装。此时的状态转移方程为dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])代码实现如下:#include#includeconst i原创 2014-11-27 19:53:08 · 300 阅读 · 0 评论 -
命运
只能向右或者向下走,向下一次只能走一格。但是如果向右走,则每次可以走一格或者走到该行的列数是当前所在列数倍数的格子,即:如果当前格子是(x,y),下一步可以是(x+1,y),(x,y+1)或者(x,y*k) 其中k>1;命运大迷宫可以看成是一个两维的方格阵列,如下图所示: 从大魔王的那点出发,从第n行到第1行,从第m列到第1列依次遍历dp二维数组,相当于从右下角到左上角,dp[i]原创 2014-11-27 18:23:21 · 373 阅读 · 0 评论 -
HDU--1176 免费馅饼
给出一组时间,及在每个时间饼掉落的位置,同一秒可以在同一点掉多个饼,初始位置为5这个点,每秒钟只能移动一个格,则第一秒钟只能接到4 5 6 这三个饼的数量,求最后能接到的最大饼数量。可以a[i][j]表示在第i秒掉落在第j个位置上的饼的数量;每次读取一个时间,地点,该位置的饼数量就加1;用d[i][j]表示在第i秒的第j个位置能接到的最大饼数量。这道题相当于数塔那道题。因为每秒只能走一原创 2014-11-27 19:41:21 · 265 阅读 · 0 评论 -
HDU--1284
一维数组实现:原创 2014-10-31 21:45:57 · 352 阅读 · 0 评论 -
dp算法思想及运用实践例题
最优化原理 1951年美国数学家R.Bellman等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。一些静态模型,只要人为地引进“时间”因素,分成时段,就可以转化成多阶段的动态模型,用动态规划方法去处理。与此同时,他提出了解决这类问题的“最优化原理”(Principle of optimality): 上述程序实现方法同样适合转载 2014-03-30 21:47:16 · 1677 阅读 · 0 评论 -
hdu--2084 数塔
#includeint a[105][105];int sum[105];int main(){ int c; while(scanf("%d",&c)==1){ for(int k=0;k<c;k++){ int n; scanf("%d",&n); for(int i=0;i<n;i+原创 2014-11-06 01:53:08 · 331 阅读 · 0 评论 -
HDU -- 2955 Robberies
题目简述:给出一个被抓概率,在概率之下则是安全的,给出n个银行的现金及被抓概率,求在小于被抓概率下最多能抢多少钱;总体思路:这是一道01背包题,但稍有些变形,即要把能抢银行的总钱数当做背包容量,因为每个银行的钱数是固定的,一个银行的这些钱就是一个整体,所以这就要求背包恰好装满;细节考虑:用dp[j]表示抢到j的钱数对应的安全概率,初始化时只有什么钱都不抢的概率是最大,所以dp[0]=1,其原创 2014-12-01 21:38:25 · 297 阅读 · 0 评论