DP 动态规划
文章平均质量分 65
surfacedust
弱的可怜~
展开
-
Party at Hali-Bula POJ3342
<br />AC的第一道水树形DP,纪念下!详解以后再说,理由同上,嘿嘿!那个判断是否唯一借鉴的别人的思想!<br />#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 205#define Max(a,b) a>b?a:bint G[N][N]; //存子节点个数,及坐标int dp[N][2]; //存值int n,last,flag; char name[N][N];int Get_id(c原创 2011-05-11 20:37:00 · 562 阅读 · 0 评论 -
动态规划遇到瓶颈了,换个方向搞下!
动态最近A不动题了。。。。各种不会,各种纠结~原创 2011-08-15 11:57:35 · 738 阅读 · 0 评论 -
HDU 1500 Chopsticks
一道不算是很难的DP,一些人的爱好还真是奇怪的说!嘿嘿先变成非递增序列,因为要保证有一个最大的C在每一组里面。转移方程: dp[i][j] = Min(dp[i][j-1] , dp[i-1][j-2] + (set[j-1 - set[j] )* (set[j-1]原创 2011-08-14 10:59:55 · 1780 阅读 · 0 评论 -
POJ 1038 Bugs Integrated, Inc.
http://poj.org/problem?id=1038大意:原创 2011-08-12 16:31:52 · 1978 阅读 · 2 评论 -
POJ 3254 Corn Fields
http://poj.org/problem?id=3254【题目大意】一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻。问有多少种放牛方案(一头牛都不放也是一种方原创 2011-08-11 16:59:11 · 975 阅读 · 1 评论 -
POJ 3280
http://poj.org/problem?id=3280回文串,给你一串字符,通过添加删除其中的一部分,使其变成一个回文串,并且花费最小(添加删除都有权值)dp[i][j] 表示 i ~ j 可以构成回文串的最小花费。那么存在: dp[i][j] = Min(dp原创 2011-08-09 09:52:59 · 1672 阅读 · 0 评论 -
HDU 3905 Sleeping
/*状态转移: dp[i][j] = Max(dp[i-1][j-1],dp[k][j]+sum[i]-sum[k]) 表示前i分钟,睡j分钟能获得受益的最大值,由第i分钟不原创 2011-08-06 09:40:42 · 1381 阅读 · 2 评论 -
HUD 1227 && POJ 1485 && ZOJ 1196
嗯,题意比较容易理解,在高速公路旁有一些快餐店,然后每一个快餐店距高速出口的距离给出,在这几个快餐店中的K个建仓库,使每个快餐店到其最近的仓库距离和最短。并输出方案(可能有多个,求解任意一个)典型的DP 前i个神马东西里面选几个东西的问题吧属于,但是路径不会!参考别人代码原创 2011-07-31 10:14:12 · 979 阅读 · 0 评论 -
HDU 1224
/*刚开始没有看懂题意,让求一个从1到n+1的Max_sumdp[i] = dp[i] + max(dp[j]);当前点等于所有可达点的最大值+当前点的值记录路径并输出*/#include#include#includeint map[105]原创 2011-07-30 20:40:29 · 1092 阅读 · 0 评论 -
HDU 1565 方格取数(1)
嗯,状态压缩嗯,其实是一道比较简单的状态压缩,枚举每一种不与上一个状态冲突的情况,然后计算,选择当前状态的最大值/*状态压缩DP*/#include#include#include#define M 1<<21#define NUM 28657 /原创 2011-07-29 17:51:54 · 1727 阅读 · 1 评论 -
HDU 1712 ACboy needs your help
嗯,一道纯裸的分组背包问题。。。。题意是:有N个课程,然后选择M天内学习的效益最大值。嗯,看第一版背包九讲的时候,也许会发现伪代码和我写的程序不一样,很正常,因为DD童鞋不小心写错了!使用一维数组的伪代码如下:for 所有的组k for v=V..0 for原创 2011-07-29 15:49:11 · 1506 阅读 · 0 评论 -
HDU_1158 Employment Planning
题目很容易理解,就不说了! /*简单DP,转移方程:dp[i][j] = min(dp[i-1][k]+cost);第i个月,雇佣人数为j时的最小花费 k 为 上一个月 最小人数 到 最大人数*/#include#include#include#def原创 2011-07-28 09:13:43 · 778 阅读 · 0 评论 -
POJ 1083 Moving Tables
<br />额,这个题很容易看懂,就不说题意了!<br />其实吧,这个题的数据很弱,导致直接暴力都可以0 毫秒过掉!<br />暴力方法就是 把那个要转移的房间之间的所有路径都+1,然后找最大的那个 *10 就是所需时间!<br />#include<stdio.h>#define N 202int s[N];//确定边界int Get(int x){ if(x%2)return x/2+1; else return x/2;}int main(){ int T原创 2011-05-03 22:54:00 · 510 阅读 · 0 评论 -
POJ 1018
<br />额,这道题大牛们为啥说DP呢,我怎么想都想不到DP上面,所以,木办法,直接四重for循环暴力+贪心!<br />代码就不丢人了,百度一下NNNN,神马时候动态解的时候再说!!!原创 2011-05-01 19:50:00 · 558 阅读 · 0 评论 -
POJ 1141
<br /> •定义如下规则序列(字符串):–空序列是规则序列;–如果S是规则序列,那么(S)和[S]也是规则序列;–如果A和B都是规则序列,那么AB也是规则序列。•例如,下面的字符串都是规则序列:–(), [], (()), ([]), ()[], ()[()]•这几个则不是规则序列:–(, [, ], )(, ([()•现在,给出一些由‘(’,‘)’,‘[’,‘]’构成的序列,请添加尽量少的括号,得到一个规则序列。 •d[i,j]: 子串i…j最少需要添加的括号数•状态转移–S形如(S’)或者[S’]:原创 2011-05-01 19:44:00 · 522 阅读 · 0 评论 -
POJ 1029 False coin
<br />这道题就是在N个硬币里面,有一个假币,但是银行缺钱啊,所以只有一个天平,所以,开始称量,问在有限次测量,并知道那边轻重的情况下,你可不可以知道那个是假币!<br />这道题大牛们说是动态规划,但是昨天想了很长时间,也没看出来哪儿是DP,那位神可以给解惑下就好了!!<br />这道题一开始想简单了,有人说数据弱,暴力可过,就想着自己写写暴力吧,中间判断某一个是假币的如果都满足的时候,可能在当前状态下还有其它的可以判断可能为假,这样就一个状态下存在多解问题,不能很快的搞定,所以就放弃了!<br />原创 2011-04-30 14:48:00 · 884 阅读 · 0 评论 -
POJ 1015
好吧,备战省赛的第一道DP看了N本书上面的DP,都讲的很浅!还是在做题中学习算了!这个花了一天的时间看别人的程序,终于看懂了!!大意就是陪审团要在N个里面挑选M个人出来,然后每个人都有两个权值,最后挑选的人要满足权值差的绝对值最小,如果有多解的时候,找权值和最大的,如果还存在多解,那么你就随便选择一个输出好了!最后要输出路径,当然还有(差,和)也要输出!#include#include#define N 1000#define NN 25//sub 存差,plus 存和 int sub[原创 2011-04-29 19:50:00 · 1120 阅读 · 0 评论 -
POJ 2479
http://poj.org/problem?id=2479DP 求两个子段和的最大值如果知道DP的话,一定知道如何求一个数组区间最大值这个其实就是一个简单的变形考虑下 求两个子段和的最大值 其实就是把这个数组分成两份 ,然后分别求其区间最大值,对吧……然后此题就可解了……POJ 2593 几乎一样……原创 2012-04-05 18:25:26 · 532 阅读 · 0 评论