![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础DP
En回车
这个作者很懒,什么都没留下…
展开
-
CodeForces 429B Working out
题目链接:http://codeforces.com/problemset/problem/429/BB. Working outtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstanda原创 2016-12-29 11:35:01 · 428 阅读 · 0 评论 -
[简单DP]免费馅饼 HDU - 1176
[简单DP]免费馅饼 HDU - 1176 分析: 题目说gameboy想要吃尽可能多的饼,那就往DP想吧。。。发现影响结果的因素分别是时间和位置。因此我们使用DP[i][j]表示第i秒站在j位置时,得到的饼的最大值。题目限定开始位置在5处,并且每次只能移动一个单位。 状态转移方程: dp[i][j]=max(dp[i-1][j-1],max(dp[i-1][j],dp[i-1][原创 2017-07-29 09:53:58 · 301 阅读 · 0 评论 -
[01背包] Piggy-Bank HDU - 1114
[01背包] Piggy-Bank HDU - 1114 题目大意:告诉你空储蓄罐的重量和装满硬币后的重量,一次每种硬币的重量和价格。问你储蓄罐至少装了多少钱。 分析:01背包,不过那个是求最大,这个是求最小而已。。一模一样。#include<stdlib.h>#include<string.h>#include<algorithm>#include<math.h>#include<s原创 2017-07-29 09:38:24 · 281 阅读 · 0 评论 -
[简单DP]Super Jumping! Jumping! Jumping! HDU - 1087
[简单DP]Super Jumping! Jumping! Jumping! HDU - 1087 题目大意:给你一个1*(n+2)的棋盘,第一个为开始,最后一个结束,中间有N个数字。从“”开始“”开始跳跃,你可以跳跃任意多个棋子,比如可以直接跳到“”结束“”,这样得分为0。跳到数字上时,每次只可以跳到比当前数字大的棋子上。最后得到的分数为跳跃棋子数字之和,问你最大是多少。 分析:明显是求最大原创 2017-07-29 09:32:52 · 280 阅读 · 0 评论 -
[思维题] Ignatius and the Princess IV HDU - 1029
[思维题] Ignatius and the Princess IV HDU - 1029 题目大意:在给定的N个数字中,有个数字出现至少(N + 1)/ 2次,让你找出他。 分析:这道题kuangbin大神把他放到了简单DP里,我没看出怎么DP。。。我是这么想的,既然这个数字出现了(N + 1)/ 2次,那么只有它可以和其他数字一一抵消并且最后还有剩余。所以O(N)模拟下就是答案。原创 2017-07-29 09:24:47 · 247 阅读 · 0 评论 -
[简单DP]Max Sum Plus Plus HDU 102
[简单DP]Max Sum Plus Plus HDU 102题目大意,给你N个数字,要求分为m段不相交的字段,求总和最大。例如,-1、 4、 -2、 3、 -2、 3、6个数字,分成两个子段的话,我们可以分成4一段,3、-2、3一段,这样总和为8最大。分析:第一次看到这道题的时候自己不会,参考网上的题解做的。今天是第二次做,打算好好分析下。很显然,这是一道DP。首先去原创 2017-07-28 15:56:03 · 240 阅读 · 0 评论 -
文章标题
[简单DP]N - Longest Ordered Subsequence POJ - 2533 题意:最长递增子序列,n<=1000 分析:比较好理解的就是O(n*n)复杂度的。。。。还可以通过二分优化成o(n*logn)的。。。我用的前者 代码:#include<stdlib.h>#include<string.h>#include<algorithm>#include<ma原创 2017-07-31 14:52:21 · 260 阅读 · 0 评论 -
文章标题
[简单DP]L - Common Subsequence POJ - 1458 题意:最长公共子串,DP入门题目。 分析:我直接用的O(n*m)的做法。。。 代码:#include<stdlib.h>#include<string.h>#include<algorithm>#include<math.h>#include<stdio.h>#include<queue>using原创 2017-07-31 14:48:11 · 268 阅读 · 0 评论 -
[简单DP]FatMouse's Speed HDU - 1160
[简单DP]FatMouse's Speed HDU - 1160 题意:给定一组数,每组包含两个整数。要求输出该组数的一个子集,该子集的第一个数逐渐增大,第二个数逐渐变下。使得这个子集尽可能的大并输出对应小标。 分析: 题目很简单,说白了就是对第一个或者第二个数字排序下,然后求另外一个数字的递减或者递增序列。 由于要输出序列,所以要记录下子集中每组数的前一组数的下标,然后递归输出。 代码原创 2017-07-31 14:35:54 · 279 阅读 · 0 评论 -
[简单DP]Tickets HDU - 1260
[简单DP]Tickets HDU - 1260 题目大意:对于每个样例,告诉你需要卖票给K个人,每次可以卖1张或者两张,然后告诉你K个数字,分别是卖给K个人需要的时间,最后告诉你K-1个数字,是第i-1和第i个人的票一起售出的时间。从八点开始卖票,问最早什么时候可以卖完。 分析:DP,只有一个变量,就是卖到第I个人所需要的时间,定义dp[i]。但是我们发现每次决策都有两种,一是当前这个人单独卖原创 2017-07-31 13:48:01 · 289 阅读 · 0 评论 -
[简单DP]Monkey and Banana HDU - 1069
[简单DP]Monkey and Banana HDU - 1069 题意:给你N种类型长方体,长宽高分别为X,Y,Z,每种长方体都可以无限制的使用。现在让你把他们一个接着一个组成一个尽可能高的塔,每一层只能有一个长方体,并且上一层的长方体的长和宽要严格大于它下面长方体的长和宽。 分析:塔的高度只和用多少种长方体有关,因此我们可以使用dp[i]表示使用i种长方体可以组成的最大高度,塔底的长和宽原创 2017-07-29 09:20:13 · 250 阅读 · 0 评论