动态规划
文章平均质量分 64
_binbin
我是“三好学生”:好吃,好玩,好睡。
展开
-
HDU 2412 Party at Hali-Bula
#include #include #include #include #include #include #include using namespace std; struct node{ int in,no; }; struct link{ int nex,to; }L[509]; int F[509]; map mp; int cnt,cntl,n; void原创 2012-08-06 15:13:16 · 649 阅读 · 0 评论 -
TYVJ 1211 跳舞家怀特先生(DP)
连接:http://new.tyvj.cn/Problem_Show.aspx?id=1211 思路:dp[k][i][j] 表示第k步,第一只脚在i点,第二只脚在j点。。一次只能变一只脚。。 #include #include #include #include #include #include #include using namespace std; const int原创 2012-09-17 16:09:20 · 1482 阅读 · 0 评论 -
HDU 1133 Buy the Ticket(DP)
题意:买票的时候,顾客有50元的钱或者100元的钱,,只能用顾客的钱找环给顾客。。所以50每一次,拿50元的要不少于拿100元的顾客。。 思路:动态规划。 方程:dp[i][j] = X*dp[i-1][j] + Y*dp[i][j-1] .,X,Y都是表示,选择第i个人时 ,有(n-i+1)种选择方式。dp[i][j] 表示当前已经有i个拿50的顾客,j个拿100元的顾客买到票了。原创 2012-10-14 20:35:51 · 975 阅读 · 0 评论 -
HDU 4475 Downward paths
#include #include #include #include #include #include #include using namespace std; #define LL long long const int N = 1000009; const LL MOD = 1000003; int re[N]; void init() { LL k = 1;原创 2012-12-02 16:59:39 · 842 阅读 · 0 评论 -
POJ 1018 Communication System (DP)
题意: 一个系统由若干个设备组成,没一个设备有多种选择。求b/p的最大值。设n个设备的带宽和价值分别为 (bi,pi) ,则b = min(bi),p = sum(pi); bi,pi 没有说明大小,都不是很大, dp[i][j] = max(dp[i][j],dp[i-1][j]+b[k]);{p[k] #include #include #include #include原创 2012-12-16 20:23:10 · 1374 阅读 · 0 评论 -
POJ 1179 Polygon(区间DP)
题意:把一个多边形去掉一边,再把任意相邻打两个点合并成一个点,求最大值, 注意:两个最小的数相乘可以得到最大的数。。。 #include #include #include #include #include #include #include #include using namespace std; #define LL long long const LL INF =0原创 2012-12-18 22:12:49 · 568 阅读 · 0 评论 -
POJ 1189 钉子和小球 (DP)
题意: #include #include #include #include #include #include #include #include using namespace std; #define LL long long int p[59][59]; LL dp[59][59]; int n,m; LL gcd(LL a,LL b) { if(a==0)原创 2012-12-20 17:05:16 · 671 阅读 · 0 评论 -
1086 - Jogging Trails (欧拉回路+dp)
好长时间没有做dp了 ,做个dp题 ,感觉跟模拟差不多,,这是在倒退啊。。 #include #include #include #include #include #include #include #include #define LL long long #define DB double using namespace std; const int N =原创 2013-05-02 17:16:51 · 708 阅读 · 0 评论 -
codeforces 303 D. Ilya and Roads(动态规划)
多年没有写动态规划就是个悲剧啊!!省赛结束之后学习数据结构+动态规划..努力努力 #include #include #include #include #include #include #include #include #include #define LL long long #define DB double using namespace std; const in原创 2013-06-02 19:23:29 · 837 阅读 · 0 评论 -
HDU 4714 Tree2cycle (构造,树形DP)
题意:一个树减去一条边,或者加上一条边的费用都是1,问把这棵树改成一个圆的最小费用。 一个树形dp,不会dp的菜鸟,,,,各种分类讨论。。。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include原创 2013-09-08 17:09:10 · 1479 阅读 · 2 评论 -
SOJ 1822. Fight Club(区间DP)
题意:有n个人斗争,每一对谁赢谁败都已知,问谁可能是最后的赢家。。 思路:要相邻的打完之后才能与他隔一个的人打,容易想到用区间dp。。 dp[i][j] 表示第i个人可以与第j个人打,,只要到最后i能跟i+n打,说明就可以赢了。。 如果i能打到j,k能打到j ,只要i能打赢k,或者j能打赢k,i,j就能见面了。。 连接:http://soj.me/1822 #include #in原创 2012-09-17 15:17:48 · 1160 阅读 · 0 评论 -
POJ 1141 Brackets Sequence(区间DP)
题意:括号匹配; 思路:第一次做区间dp的题;好难理解他的存储结构啊。 dp[i][i] 表示 第i个字母到第j个字母有多少个匹配的括号。。a[i][] 表示到达该步的前一步,, #include #include #include #include #include #include #include using namespace std; const int N = 10原创 2012-09-15 21:18:57 · 540 阅读 · 0 评论 -
live archive 4212 - Candy
题意:最多可以拿走多少个糖果。当拿走一个糖果的时候,他左右两边的两个和上一行和下一行的两行都会没有。 先横向再纵向DP:状态转移:dp[i] = max(dp[i-2],dp[i-3])+dp[i]; 求最大值就行了。 #include #include #include #include #include #include using namespace std; const原创 2012-08-12 08:46:44 · 510 阅读 · 0 评论 -
POJ 3345 HDU 2415 Bribing FIPA(树形DP)
题意:贿赂了某人就可以得到他的选票,和他下属的选票,问要得到m张选票,最少要花费多少钱。 每一个人只有一个上司或者没有。是树形的;为了处理方便,增加一个跟节点,贿赂他的钱是INF,把所有没有上司的人的上司都指向该根节点。 #include #include #include #include #include #include #include using name原创 2012-08-12 11:26:55 · 935 阅读 · 0 评论 -
POJ 3260The Fewest Coins (DP)
题意:FJ 买一个T元的东西,求总钱张数最小值。即付出的张数,加找回的张数的和的值最小。。 这题真纠结啊。。。思路一开始是对的。。。但是初始化为-1 怎么交都错,,,,郁闷死了。。 #include #include #include #include #include #include using namespace std; const int M = 10001; con原创 2012-08-29 21:15:06 · 500 阅读 · 0 评论 -
HDU 4260 The End of The World
汉诺塔,给出初始状态,问,要多少步才能把他一道第二个位置。。。 #include #include #include #include #include #include using namespace std; long long dp[100][4]; int main() { freopen("in.txt","r",stdin); char a[100];原创 2012-08-25 17:33:16 · 613 阅读 · 0 评论 -
HDU 4274 Spy's Work(树形dp)
题意:树的每一个节点都有一个权值都大于1。。给你一些条件判断这些条件是否都满足。。 弱校,水平本来就差,还不好好努力。被虐了活该。。。。 #include #include #include #include #include #include using namespace std; const int N = 10009; const int INF = 0x原创 2012-09-08 18:20:50 · 1184 阅读 · 0 评论 -
POJ 3093 Margaritas on the River Walk(背包)
题意:有n件物品,每件都有价值,用m的钱买这些物品,。尽可能多的买东西,(直到钱不够买其他的东西为止)。问有多少种买东西的方法。。 思路:自己弄了一个状态转移方程,发现是错的。。后来 yy教我的‘。。。。先不买第一件物品,弄一个方程。。。再必须买第一件物品,不用第二件物品。。。再必须买前两件,不买第三件。。。类推。。这样就没有重复。。。然后考虑边界就ok了 #include #include原创 2012-09-14 21:17:20 · 875 阅读 · 0 评论 -
ecnu 1600 公路巡逻 (黑书上的DP)
链接:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1600 转移方程:dp[i+1][j+k] = min(dp[i+1][j+k],dp[i][j]+t); //从第i个关口,到第i+1个关口会与t个车相遇。 这里可以优化的。没优化也能过。就不优化了。。 #include #include #include #include原创 2012-10-05 10:53:26 · 1138 阅读 · 2 评论 -
POJ 2642 The Brick Stops Here(01背包)
题意: 有n种砖块,每种有价格和体积。问从中选出t种砖块,要求平均体积在a到b之间。。。标准的01背包 思路:dp[i+1][j+v]=dp[i][j]+p; 最多选出20种,所以dp只要到20层就可以了。。。。 现在开始转动态规划了,又有好多水题做了,,, #include #include #include #include #include #include #incl原创 2012-09-14 18:48:38 · 697 阅读 · 0 评论 -
POJ 1976 A Mini Locomotive(背包)
题意:求最大的3个连续子段和。。 方程:dp[i][j] = max(s[j]+dp[i-1][j-lm],dp[i][j-1]) 、、dp[i][j] :前j个数的子段中选i个的最大和。s[i] 第i-m+1到i的数字之和。。。 #include #include #include #include #include #include #include using names原创 2012-09-15 09:34:51 · 572 阅读 · 0 评论 -
ZOJ 3735 Josephina and RPG (dp)
这题应该是动态规划吧,乱猜的。 dp[i][j]表示 开始的时候选择第i个人。后来经过战斗&交换变成第j个人。的最优值。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #原创 2013-11-24 19:05:43 · 1520 阅读 · 0 评论