dp
Re0:c++入门到放弃
这个作者很懒,什么都没留下…
展开
-
HDU 1159 Common Subsequence
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159题目大意:给你两个字符串。找出他们的最大公共字串思路:逐个匹配。并用DP数组记录下。到这个位置最多有多少个字符匹配 具体想法看代码注释代码如下:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>原创 2015-08-25 15:40:20 · 280 阅读 · 0 评论 -
HDU 1231 最大连续子序列( DP做法 + 水题做法)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231感谢美辰学长的指导DP做法代码如下:#include <iostream>#include <cstring>#include <cstdio>using namespace std;int N;int a[10050]; //存放每一个输入数int b[10050]; //存放以i结尾的最原创 2015-08-12 18:00:18 · 345 阅读 · 0 评论 -
HDU 1114 Piggy-Bank
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114题目大意:T组测试样例。接着给出空储蓄罐的质量和装满硬币储蓄罐的质量。接着是一个N。表示有多少种硬币。然后N行表示价值和质量。问储蓄罐中最少有多少钱思路:这个也是一道DP背包问题。但是这道题是求最少有多少硬币。只需改变初始化条件。和状态转移方程就可以了代码如下:#include <iostream>原创 2015-08-28 10:02:42 · 335 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087题目大意:输入一个数N。然后给你N个数。起点最小。终点最大。要求计算最多的得分(每走到一个比你绝对大的数时。你的得分就加上那个数。同时你自己的数改成是那个数,从起点直接到终点为0分。) 思路:就是找和最大的子序列。代码如下:#include <iostream>#include <cstdio>原创 2015-08-14 10:30:00 · 244 阅读 · 0 评论 -
HDU 1978 How Many Ways
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978题目大意:<中文题>思路:二位的DP数组记录下某一位置有多少种走法。然后通过dfs的方法来深搜所有的点。每次将dp[i][j]加成dfs返回的值。最终dp[1][1]就是所求解代码如下:#include <iostream>#include <cstdio>#include <cstring>原创 2015-08-28 10:24:16 · 229 阅读 · 0 评论 -
HDU 1203 I Need A Offer
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203题目大意:《中文题》思路:要求至少拿到一份Offer的概率。那么根据高中知识只需要用 1-P(都拿不到Offer)就是所要求的概率。 在状态转移方程中要注意。两个事件是都要发生所以概率是用乘算而不是加算。代码如下:#include <iostream>#include <cstdio>#inc原创 2015-08-28 17:22:06 · 287 阅读 · 0 评论 -
HDU 1257 最少拦截系统
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257题目大意:《中文题》思路:这个问题中DP数组有些特别。它存放的是之前出现过的最小值。 每一次输入后。将其与DP中存放的值做比较。如果找到比输入的值更大的DP[i]的值。就修改。否则系统+1。代码如下:#include <iostream>#include <cstdio>#include <c原创 2015-08-28 17:32:09 · 350 阅读 · 0 评论 -
HDU 2602 Bone Collector ( DP )
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 题目大意:有一个体积为V的背包。要装价值尽可能大的石头。问怎么装思路:简单背包问题。 每个石头都可以装或者不装。可以得到状态转移方程 dp[j] = max( dp[j] , dp[ j - bone[i].cost ] + bone[i].value ) 最后dp[V]中的值就是我们要的答原创 2015-08-21 10:53:40 · 288 阅读 · 0 评论 -
POJ 3903 Stock Exchange
原题链接:http://poj.org/problem?id=3903题目大意:找一个最大递增子序列思路:由于这题数据量较大,如果按照递增子序列的一般写法,会超时。所以这里要在筛选dp的时候做出优化—二分查找代码如下:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespac原创 2015-08-21 12:21:47 · 311 阅读 · 0 评论