乱搞dp
文章平均质量分 72
霜刃未曾试
这个作者很懒,什么都没留下…
展开
-
lightoj 1122 Digit Count
DescriptionGiven a set of digits S, and an integer n, you have to find how many n-digit integers are there, which contain digits that belong to S and the difference between any two adjacent digits原创 2016-04-09 15:27:30 · 861 阅读 · 0 评论 -
EOJ 3261 分词 dp+字典树
题目:http://acm.ecnu.edu.cn/problem/3261/题意:有一句句子因为粘贴的时候出现了一点问题空格全部丢失了。现在给一本字典,每个词都对应这个词出现的频率(每十亿)。根据这个频率,我们可以根据下面的公式算出这个词带来的收益 P(word):P(word)=len2(word)⋅ln(frequency(word)) 其中 frequency 就是上面所提到的频率。len原创 2017-05-24 17:19:38 · 482 阅读 · 0 评论 -
CSU 1120 病毒 最长公共上升子序列(LCIS)
题目:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1120题意:Description 你有一个日志文件,里面记录着各种系统事件的详细信息。自然的,事件的时间戳按照严格递增顺序排列(不会有两个事件在完全相同的时刻发生)。 遗憾的是,你的系统被病毒感染了,日志文件中混入了病毒生成的随机伪事件(但真实事件的相对顺序保持不变)。备份的日志文件也原创 2017-05-02 20:02:08 · 367 阅读 · 0 评论 -
POJ 3267 The Cow Lexicon 简单dp
题目:http://poj.org/problem?id=3267题意:给定w个字符串,再给定一个长度为l的字符串(设为str),问使用之前的w个字符串去匹配str,str中多余的字符最少有多少个,其中w个字符串可以重复使用。思路:定义dp[i]为从str[i]至str[l-1]中多余字符的最少个数,对于当前位置str[i],当w中某个字符串与str匹配时,那么dp[i] = min(dp[i],原创 2017-03-24 20:32:01 · 375 阅读 · 0 评论 -
CodeForces - 629D Babaei and Birthday Cake dp+线段树优化
题目:http://codeforces.com/problemset/problem/629/D题意:有n个蛋糕,从1编号到n,现在用这些蛋糕制作一个大蛋糕,要求编号大的蛋糕必须放在编号小的蛋糕上面,且上面的蛋糕的体积必须严格大于下面蛋糕的体积,问能制作出的大蛋糕的最大体积思路:定义 dp[i]=max(dp[j]|j<i∧vj<vi)+vi dp[i] = max(dp[j]\;|\; j <原创 2017-04-09 13:04:12 · 325 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome dp
题目:http://poj.org/problem?id=3280题意:给定一个字符串,可以在任意位置删除或插入字母,每个字母插入和删除都有一个代价,问要是整个字符串变成一个回文串,所花费的最小代价是多少思路:定义dp[i][j]dp[i][j]为区间[i,j][i,j]变为回文串所花费的最小代价,那么可以得到状态转移方程为: if(s[i]==s[j])dp[i][j]=dp[i+1][j−1]原创 2017-04-08 20:09:36 · 311 阅读 · 0 评论 -
HDU 1505 City Game dp
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1505题意:给定一个n*m的矩阵,矩阵里每个点只有R和F两种,要求划分出一个只含有F的矩阵,求这个矩阵的最大面积思路:跟HDU1506很像,以矩阵的每一行作为底,把这一行之上的矩阵部分压缩为一维,就可以用1506的方法求了。#include <bits/stdc++.h>using namespace st原创 2016-11-22 10:40:03 · 355 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram dp
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1506题意:给定一个直方图,求直方图中能包含的最大的矩形面积思路:对于直方图中的每一个小矩形,分别向左向右扩展到低于自身高度的地方(分别用l[i]和r[i]表示),那么就构成一个大矩形,长为(r[i] - l[i] + 1),宽为当前小矩形的高。依次计算所有的小矩形扩展构成的大矩形,取最大值。其中如何快速计算原创 2016-11-21 18:26:30 · 332 阅读 · 0 评论 -
HDU 1421 搬寝室 dp
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1421思路:思路来自百度。 这是一道dp,先对数组排序,那么可以求单个数的左右最优解。定义dp[i][j]为从前i个数中取j对数,符合题意的要求,假设dp[i][j]中有第i个物品,那么第i个物品一个和第i-1个物品配对,于是有dp[i][j] = dp[i-2][j] + (原创 2016-03-06 20:10:12 · 484 阅读 · 0 评论 -
HDU 2577 How to Type 简单dp
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2577题意:给出一个只含有大小写字母的字符串,求用键盘打出这串字符需要的最少敲击次数思路:定义dp[0][i]为小写状态下敲击完第i个字母时最小敲击次数,dp[1][i]为大写状态下敲击完第i个字母时最小敲击次数。很容易可以找出转移方程#include <bits/stdc++.h>using namesp原创 2016-11-29 18:36:04 · 454 阅读 · 0 评论 -
LightOJ 1005 Rooks 动态规划dp || 组合数学
题目:http://www.lightoj.com/volume_showproblem.php?problem=1005题意:给定一个n * n的棋盘,往上面放k个棋子,棋子可以攻击所在的行或列,求把k个棋子放在棋盘上使任意两个不能互相攻击的方案数思路:有两种解法,dp或者组合数学一:dp方法设dp[i][j]为前i行放j个棋子时满足条件的方案数,dp[i][0]置为1,可以得到原创 2016-08-01 11:53:03 · 534 阅读 · 0 评论 -
LightOJ 1004 Monkey Banana Problem 动态规划
题目:http://www.lightoj.com/volume_showproblem.php?problem=1004题意:给定一个由数字组成的菱形,问从顶端走到底端的路线上数字的最大和,行走方式为可以从当前数字向下一层临近的两个数字走。思路:动态规划。对于菱形的上半部,可以得状态转移方程为dp[i][j] += max(dp[i-1][j-1], dp[i-1][j]),对于下半部,原创 2016-08-01 09:50:43 · 604 阅读 · 0 评论 -
PAT 5-24 Find More Coins 背包记录路径
题目:https://pta.patest.cn/pta/test/16/exam/4/question/686题意:有n个有面值的硬币,问能不能凑成m元,如果可以,则输出按硬币面值排序最小的方案思路:01背包记录路径。可以把硬币从大到小排序,那么在01背包计算过程中,就可以从大更新到小,然后逆向寻找路径时输出即可#include #include #include #i原创 2016-07-13 16:59:31 · 373 阅读 · 0 评论 -
UVA 624 01背包求方案
题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=565题意:给定背包容量,给定物品个数,然后是物品,价值和体积相等。求最大价值时的放入方案,多解输出一解即可思路:每次更新背包时顺便记录被谁跟新的即可,然后逆向求方案,正向输出原创 2016-05-19 18:29:35 · 358 阅读 · 0 评论 -
poj 2955 Brackets 区间dp
题目:http://poj.org/problem?id=2955题意:给一串由()[]四个字符组成的字符串,求最大匹配个数思路:定义dp[i][j]为从i到j的最大匹配个数,当s[i]和s[j]相匹配时,显然有dp[i][j] = dp[i+1][j-1] + 2,然后依次枚举i到j之间的中间值dp[i][j] = max(dp[i][j], dp[i][k] + dp[k+1][j])原创 2016-04-14 14:23:33 · 774 阅读 · 0 评论 -
nyoj737 石子合并 区间dp
描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入有多组测试数据,输入到文件结束。每组测试数据第一行有一个整数n,表示有n堆石子。接下来的一行有n(0输出输出总代价的最小值,占单独的一行样例输入原创 2016-04-10 12:47:40 · 546 阅读 · 0 评论 -
hdu 6024 Building Shops dp
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6024题意:有n间教室,要选一些建商店,对于每间教室,如果选中在这间教室建商店,会给出一个花费,如果没有选中,那么也有一个花费,就是这间教室到左边最近的商店的距离。要求当一间教室没有建设商店时,那么它左边一定有一个商店。求最小花费思路:根据题意,第一间教室一定要建商店。定义dp[0][i]为第i间教室不建商店原创 2017-10-16 16:14:59 · 355 阅读 · 0 评论