DP-未分类
小囧子
成功注定是与饥寒相伴,与寂寞同行。
展开
-
hdu 4433 Locker dp
lockerTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1827 Accepted Submission(s): 833Problem DescriptionA password l原创 2016-08-15 15:48:23 · 332 阅读 · 0 评论 -
poj 1080 Human Gene Functions 算简单DP
题解:抄袭discuss,哈哈!首先定义对X(xm) = {x1,x2,x3,...xm};Y(yn) = {y1,y2,y3,...yn};这两个按照题目的要求得到最大值的排列M{...}所对应的最大值是f(m,n);****************************************************当xm != yn的时候**************转载 2017-04-10 12:26:56 · 234 阅读 · 0 评论 -
poj 1050 To the Max(DP)做法很多
题意: 给你一个n*n的正方形,求这个正方形除自己外的子矩阵所有点的和最大的那个。做法一:我自己想的嘿嘿嘿!代码:#include #include #include #include #include using namespace std;const int MAXN = 101;int dp[MAXN][MAXN][MAXN], g[MAXN][MAXN];i原创 2017-04-09 20:40:25 · 322 阅读 · 0 评论 -
poj 1042 Gone Fishing dp或枚举贪心
【问题描述】 约翰是个垂钓谜,星期天他决定外出钓鱼h小时(1≤h≤16),约翰家附近共有n个池塘(2≤n≤25),这些池塘分布在一条直线上,约翰将这些池塘按离家的距离由近到远编上号,依次为L1,L2,…,Ln,约翰家门外就是第一个池塘,所以他到第一个池塘是不用花时间的。约翰可以任选若干个池塘由近到远地垂钓,并且在每个池塘他都可以呆上任意长的时间,但呆的时间必须为5分钟的倍数(即5分钟为一个原创 2017-04-08 18:05:43 · 663 阅读 · 0 评论 -
poj 2479 2593
题目大意: 对于连续的整数和的串s1和s2,s1与s2不相交,使得s1+s2最大解题方法: DP。 lt[i]代表以第i个元素结尾的串最大值 rt[i]代表以第i个元素开头的串的最大值 那么设置一个rtm[i]代表取后i个元素之中最大连续子串的和 很显然,lt[i]=max(a[i],lt[i-1]+a[i]); rt[i]=max(a[i],rt[i+1]+a[i]);原创 2017-03-21 11:42:05 · 243 阅读 · 0 评论 -
ACM-ICPC Live Archive 2031 - Dance Dance Revolution(状态dp)
思路:如果跳到第k个舞步时左脚在位置x, 右脚在位置y时所需消耗的最少体力记为d[k,x,y],那么,合法的决策有: 一:把一只脚从中心位置移到目标位置; 二:一只脚移动到相邻位置; 三:一只脚移动到相对位置; 四:一只脚在原地再踩一下。 所以 状态转移方程为d[k, a[k], y] = min(d[ k - 1, x, y] + effort(x原创 2016-11-11 17:43:24 · 354 阅读 · 0 评论 -
poj 1141 Brackets Sequence
解题思路:根据“黑书”的思路,定义:d[i][j]为输入序列从下标i到下标j最少需要加多少括号才能成为合法序列。0c[i][j]为输入序列从下标i到下标j的断开位置,如果没有断开则为-1。当i==j时,d[i][j]为1当s[i]=='(' && s[j]==')' 或者 s[i]=='[' && s[j]==']'时,d[i][j]=d[i+1][j-1]转载 2016-11-07 13:00:57 · 244 阅读 · 0 评论 -
hdu 1024 最大M子段和
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4521 Accepted Submission(s): 1476Problem Description:Now转载 2016-08-13 11:29:25 · 377 阅读 · 0 评论 -
poj 3071 Football 概率动态规划
题目简述: 有·2^n个队伍参加足球比赛,比赛采用淘汰赛的形式,所以一共要比n轮;第一次第0对跟第1队比,第2次第0队跟第2或3队比,以此类推;输入一个矩形表示各队之间获胜的概率,求获胜几率最大的那支队伍。 思路: d[i][j]表示第j支队伍在第i轮比赛中获胜的概率,则dp[i][j]=dp[i-1][j]*sum, sum=∑(dp[i-1][k]*m[j][k]);枚举原创 2016-08-17 14:35:16 · 542 阅读 · 0 评论 -
求最大上升序列的二分搜索算法 poj 2533 Longest Ordered Subsequence
先发个程序:#include #include #include using namespace std;int main() { int a[1001], b[1001], i, j, k, n; cin>>n; for(i = 1; i <= n; i++) cin>>a[i]; k=1; b[1]=a[1]; for原创 2016-08-16 10:31:55 · 335 阅读 · 0 评论 -
dp LCS poj 1458 Commom Subsequence
题意简述: 求两个字符串的最长公共子序列的长度.代码:#include #include #include #include #define maxn 508using namespace std;int dp[2][maxn];char s1[maxn], s2[maxn];int main() { int i原创 2016-08-15 18:01:31 · 208 阅读 · 0 评论 -
poj 1260 Pearls (dp)
题意:不同等级的宝石,每个等级买了后等要额外付出10枚的钱,每一档可以买更高档的来代替,问全部宝石一共最少可花多少钱。思路:一开始想的是贪心,然后发现不行;(别问为什么,你自己举个例子就会知道的);f[i] = min{f[k] + (a[k+1] + a[k+2] ... +a[i] + 10) * p[i];a[i]表示第i个class要买的数目p[i]表示第i个class的单原创 2017-04-19 22:04:11 · 279 阅读 · 0 评论