----------DP
mfcheer
他不停地跑啊跑 就为了追上那个曾经被寄予厚望的自己
展开
-
LightOJ 1079 - Just another Robbery 【背包问题】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1079题意: 给你一些银行的存储金钱的数目及被抓的概率,若被抓总概率不超过p的话,问不被抓的条件下最多可以抢多少钱?思路: 对于一个银行,可以抢或者不抢,于是想到了背包。代码:#include <iostream>#include <cstdio>#include <alg原创 2016-02-29 19:46:22 · 514 阅读 · 0 评论 -
UVA 10269 Adventure of Super Mario 【最短路 + dp】
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1210题意: 给你a(1~a)个村子 b(a+1 ~ b)个城堡 ,m条路, 问你回家(a+b 到 1)花费的最少能量.你有魔法鞋子,每次最多可以走L长的距离且不花费能量,最多使用K次,魔法鞋原创 2015-08-12 20:04:51 · 661 阅读 · 0 评论 -
UVA 707 - Robbery【记忆化搜索】
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=599&problem=648&mosmsg=Submission+received+with+ID+14106133题意: 在一个w * h的图上,t个时刻,然后给你一些信息,知道某些时刻没原创 2015-08-10 16:05:16 · 752 阅读 · 0 评论 -
poj 1088 滑雪【记忆化搜索】
题目链接:http://poj.org/problem?id=1088基础题,不讲了,吃早饭去。。。代码:#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <queue>#include <math.h>#include <map>#include <string>u原创 2015-08-09 08:53:40 · 556 阅读 · 0 评论 -
Lightoj 1122 - Digit Count 【DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1122题意:给你m个数,选取n个数组成一个整数,使得整数各位的最大数与最小数的差小于2。问有几种选法?解法:DP。dp[i][j]表示以j结尾的i位整数的解法数目。 答案即为sum(dp[n][k] (1<=k<=9,且k在集合S中) )代码:#include <stdio.h>原创 2015-07-27 11:07:01 · 1615 阅读 · 0 评论 -
LightOJ 1231 - Coin Change (I) 【DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1231 题意:多重部分和的解法有几种。 代码:#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h>#include <complex>#include <string>#incl原创 2015-06-15 22:51:56 · 626 阅读 · 0 评论 -
合法字符串 【动态规划】
字符串只有可能有A、B、C三个字母组成,如果任何紧邻的三个字母相同,就非法。求长度为n的合法字符串有多少个?比如: ABBBCA是非法,ACCBCCA是合法的。动态规划的思路——真的要枚举么? dp[i][0] : 长度为i的、最后两位不同的合法串的个数 dp[i][1]: 长度为 i的、最后两位相同的合法串的个数 递推: dp[i][0] = (dp[i-1][0] * 2 + dp[i-1原创 2015-07-05 03:16:44 · 1987 阅读 · 0 评论 -
LightOJ 1047 - Neighbor House 【DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1047 题意:求(p[i][j])上下相邻的 j 不能相同的数塔的最小和。 解法:看代码! 代码:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include原创 2015-06-11 10:56:08 · 619 阅读 · 0 评论 -
LightOJ 1004 - Monkey Banana Problem 【DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1004 题意:两个数塔相接。 解法:简单DP。 代码:#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h>#include <complex>#include <string>原创 2015-06-10 15:06:20 · 715 阅读 · 0 评论 -
LightOJ 1038 - Race to 1 Again 【DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1038 题意:题目很短,不叙述了。 解法:dp 代码:#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h>#include <complex>#include <string>原创 2015-06-09 20:23:26 · 647 阅读 · 0 评论 -
poj 2229 Sumsets【DP】
题目链接:http://poj.org/problem?id=2229题意:一个数n可以表示成多少种不同的二的幂次的和。比如7:1) 1+1+1+1+1+1+1 2) 1+1+1+1+1+2 3) 1+1+1+2+2 4) 1+1+1+4 5) 1+2+2+2 6) 1+2+4if (i &1) dp[i] = dp[i-1] eles dp[i] = dp[i-2] + dp[i>>1]原创 2015-06-05 18:12:18 · 391 阅读 · 0 评论 -
hdu 3336 Count the string 【kmp + dp】
题目链接:http://acm.acmcoder.com/showproblem.php?pid=3336题意:求给出的字符串的所有前缀出现的次数和。dp的思想还是看的别人的题解。窝就不写啦。代码:#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#inc原创 2015-06-05 18:12:20 · 427 阅读 · 0 评论 -
hdu 1025 Constructing Roads In JGShining’s Kingdom 【dp+二分】
题目链接:http://acm.acmcoder.com/showproblem.php?pid=1025题意:本求最长公共子序列,但数据太多。转化为求最长不下降子序列。太NB了。复杂度n*log(n).解法:dp+二分代码:#include <stdio.h>#include <string.h>#include <vector> #include <string> #include原创 2015-06-05 17:06:09 · 827 阅读 · 0 评论 -
hdu 1078 FatMouse and Cheese【dp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:每次只能走 横着或竖着的 1~k 个格子,求最多能吃到的奶酪。 代码:#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h>#include <complex>#include <strin原创 2015-07-22 17:31:07 · 688 阅读 · 0 评论 -
poj 3666 Making the Grade 【dp】
题目链接:http://poj.org/problem?id=3666题意:使得一个序列变为递增或递减序列的最小代价。代价为题中给的公式。解法:dp[i][j]表示前i个数,以num[j]为末尾的最小代价。 更新的时候枚举 j 转移状态:for (int i = 2; i <= n; i++) { int t = inf; for原创 2015-07-22 19:41:29 · 616 阅读 · 0 评论 -
hdu 1950 Bridging signals【LIS nlogn】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1950题意:LIS nlogn算法代码:#include <iostream>#include <stdio.h>#include <string>#include <string.h>#include <cmath>#include <queue>#include <vector>#inc原创 2015-09-28 19:55:18 · 411 阅读 · 0 评论 -
背包专题
一、01背包问题 (先枚举物品,再逆序枚举容量) AC 1、Hdu 2602 Bone Collector 非常常规的01背包问题,用一维和二维数组都可以做,一维快相当多。解题报告 AC 2、Poj 3624 Charm Bracelet 赤裸裸的01背包问题。解题报告 AC 3、Hdu 2546 饭卡 n种菜选若干种使剩下的钱最少,背包容量是开始时的钱,物品体原创 2014-10-29 21:00:31 · 689 阅读 · 0 评论 -
LightOJ 1232 - Coin Change (II) 【完全背包】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1232 题意:每个物品价值为val[i] (>=1),每个物品有k种,组成价值为k的方案数。完全背包。 解法:完全背包计数。 代码:#include <stdio.h>#include <ctime>#include <math.h>#include <limits.h原创 2015-06-16 10:59:42 · 867 阅读 · 0 评论 -
hdu 5418 Victor and World【状态压缩】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5418题意:从1出发 每个点至少经过一次 最后回到1点的最短路径首先用floyd处理点之间的最短距离 再状压求解代码:#include <stdio.h> #include <ctime> #include <math.h> #include <limits.h> #include <c原创 2015-08-24 11:11:03 · 649 阅读 · 0 评论 -
poj 2686 Traveling by Stagecoach【状态压缩】
题目链接:http://poj.org/problem?id=2686题意: 一个人从某个城市要到另一个城市。然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票。花费的时间是马车票上有个速率值,用边/速率就是花的时间。 问最后这个人花费的最短时间是多少dp[i][j] 表示集合 i 车票 到 j 的最优解代码:#include <stdio.h> #include <ctime>原创 2015-08-24 21:03:44 · 617 阅读 · 0 评论 -
hdu 4846 Big Barn【dp】
http://acm.hdu.edu.cn/showproblem.php?pid=4846求矩阵中最大的仓库正方形#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <string>#include <ma原创 2016-09-28 16:07:25 · 479 阅读 · 0 评论 -
LightOJ 1044 - Palindrome Partitioning【dp】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1044题意:给你一个字符串,问最少分为几个回文串?思路:dp[i]表示从开头到位置 i 的最优解,若[j,i]是回文串,则dp[i] = min(dp[i],dp[j-1] +1)代码:#include <iostream>#include <cstdio>#include <原创 2016-02-29 20:59:10 · 481 阅读 · 0 评论 -
poj 1463Strategic game【树形dp】
题目链接:http://poj.org/problem?id=1463题意:给你一棵树, 求用最小的点覆盖所有的边。思路: 树上的dp,对于一个节点i,dp[i][1]表示以i为根节点选择i点的最优解,dp[i][0]为不选择i的解,对于所有的j是i的儿子节点,dp[i][0] += dp[j][1],dp[i][1] += min(dp[j][1],dp[j][0]);代码:#include <原创 2016-03-01 20:36:32 · 376 阅读 · 0 评论 -
hdu 2686 Matrix【多线程DP】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2686代码:#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#include<queue>using namespace std;int n;int a[50][50];int dp[35][35原创 2015-10-11 10:35:52 · 472 阅读 · 0 评论 -
LightOJ 1017 - Brush (III)【一般DP】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1017题意: 给你一把刷子,每次最多刷w宽的区域,给你n个点的间距,最多刷k次,问你最多能刷到几个点。解法: 按坐标排序。 dp[i][j] 表示刷到i用j次最优解,用num[i]记录i位置最多能刷多少个。代码:#include <stdio.h>#include <mat原创 2015-10-10 03:02:07 · 371 阅读 · 0 评论 -
hdu-1159【最长公共子序列】
经典DP,最长公共子序列,状态转移方程:dp[i][j]原创 2014-10-26 16:15:01 · 418 阅读 · 0 评论 -
BZOJ 1207: [HNOI2004]打鼹鼠
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1207动态规划 当前的每步必是由之前的某一步得来的代码:#include <iostream>#include <algorithm>#include <set>#include <map>#include <string.h>#include <queue>#include <s原创 2015-10-08 09:21:53 · 415 阅读 · 0 评论 -
hdu 5492 Find a path【dp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5492原来公式(n+m-1)* ∑(ai - ai_ave)^2,求公式的最小值,即最小方差路径。 公式展开化简后可以得到 (n+m-1)*s1-s2 s1为ai平方和,s2为和的平方。 dp[i][j][k] 表示 到达i行,j列时,ai的和为k时的最小平方和。代码:#include <ios原创 2015-09-29 19:08:54 · 92 阅读 · 0 评论 -
数的划分问题 【DP】
问题:把一个整数n分成k份,每份都不为0,有几种分法?分析:情况分为两类一、每份中不包含1的方法,为保证每份>=2,先拿出K个1到每一份,然后把剩下的n-k分为k份,分法有dp[n-k][k]二、至少有一份包含1,拿出1个当为一份。剩下的n-1个分为k-1份,分法有dp[n-1][k-1].代码:#include <iostream> #include <cstdio> #include <原创 2015-06-05 23:39:47 · 534 阅读 · 0 评论 -
DP经典5题 【DP】
1.最大子段和给定n个整数的序列{ N1, N2, …, Nn },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。int n, a[100];int b = 0,原创 2015-06-05 23:38:32 · 557 阅读 · 0 评论 -
HDU-1421
题目传送门:hdu1421原创 2014-11-07 21:43:51 · 562 阅读 · 0 评论 -
poj-2385
dp状态方程dp[i][j] = max(dp[i-1][j], dp[i-1][j-1])dp[i][j]标示在时间i,已经来回了j次时的最大苹果数目。原创 2014-10-18 10:47:19 · 517 阅读 · 0 评论 -
poj-2229
DP问题状态转移方程:如果i%2==0原创 2014-10-18 10:22:24 · 414 阅读 · 0 评论 -
hdu-2059
在没学算法之前就做过这道题 ,原创 2014-11-05 10:04:46 · 609 阅读 · 0 评论 -
poj-3176
经典数塔DP自下而上DP原创 2014-10-18 10:10:47 · 483 阅读 · 0 评论 -
hdu-1422
刚开始没注意访问顺序 用的贪心 WA了 后来仔细读题原创 2014-10-30 22:09:55 · 541 阅读 · 0 评论 -
hdu-2845
思路:动态规划 对于一行来说,相邻的数不可同时取,容易得到状态转移方程: dp[i]=max(dp[i-2]+a[i],dp[i-1]); 然后取每一行的最大得b[i] ,又可看作一行相同处理原创 2014-11-13 15:34:37 · 529 阅读 · 0 评论 -
hdu-1176
数塔DP的变形#include #include #include #include #include using namespace std;int p[100101][15];int main (){ int n; int x,t,t1; while (scanf ("%d",&n)!=EOF && n) { t原创 2014-10-28 18:46:13 · 505 阅读 · 0 评论 -
hdu-1505
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=15051506的加强版,原创 2014-11-13 18:37:26 · 523 阅读 · 0 评论 -
hdu-1069
动态规划和最长不增子序列类似,注意底面的两边不可以是相同的原创 2014-11-12 15:19:43 · 538 阅读 · 0 评论