动态规划
untilyouydc
月份未到你也得接受
展开
-
Lawrence HDU - 2829 (斜率优化dp)
思路:还是先列出普通的dp方程,dp[i][j]=min(dp[k][j-1]+s(i,k+1)) 表示到前i个站点,用了j次爆炸,得到的最小值,其中s(i,k+1)表示从k+1到i的连乘积。直接做必然是n^3 因为需要枚举k。考虑到dp[i][j],当j为定值,它随着i单调递增的,所以考虑使用斜率优化来做。在分析之前先处理一下任意区间的连乘积问题:有两种解决方案: 1. 记录前缀和...原创 2018-10-07 12:13:55 · 310 阅读 · 0 评论 -
Best Cow Fences POJ - 2018(斜率优化dp)
思路:直接写出表达式 sum[i]-sum[j]/(i-j)发现是个斜率的式子,所以考虑直接用斜率优化来做。其余部分根简单,只要注意要维护一个长度不超过k的区间,在入队的时候需要处理成 i-k+1的形式。代码:#include <iostream>#include <stdio.h>#include <algorithm>using na...原创 2018-10-07 16:14:30 · 277 阅读 · 0 评论 -
Print Article HDU - 3507 (斜率优化 dp)
作为斜率优化dp的入门题,可以说的非常经典了。斜率dp是一类数形结合的题目,数的方面让你写出程序,而形的方面则让你更清楚的理解正确性。首先,这题的状态转移方程是很好写的:dp[i]=min(dp[i],dp[j]+(sum[j]−sum[i])2+M)我们优化的最终目的就是要在o(1)的时间内可以求出最优的dp[j]。下面的做法就是斜率dp的一般套路:首先,在斜率dp中,一定要...原创 2018-10-05 23:47:22 · 186 阅读 · 0 评论 -
Island of Survival LightOJ - 1265
You are in a reality show, and the show is way too real that they threw into an island. Only two kinds of animals are in the island, the tigers and the deer. Though unfortunate but the truth is that, ...原创 2018-08-07 20:22:17 · 209 阅读 · 0 评论 -
Beating the Dataset LightOJ - 1274(期望dp)
You are in a contest, and unfortunately you don't have much time. You have one problem in hand; you just glanced at the sample output and found that it just wants 'YES' or 'NO'. So, you have made anot...原创 2018-08-10 11:33:36 · 352 阅读 · 0 评论 -
Where to Run LightOJ - 1287(期望+状压dp+记忆化搜索)
Last night you robbed a bank but couldn't escape and when you just got outside today, the police started chasing you. The city, where you live in, consists of some junctions which are connected by som...原创 2018-08-10 16:19:47 · 293 阅读 · 0 评论 -
A Dangerous Maze (II) LightOJ - 1395 (期望dp)
You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors.If you choose the ith door, it can either...原创 2018-08-10 23:19:33 · 417 阅读 · 0 评论 -
Dice (III) LightOJ - 1248
Given a dice with n sides, you have to find the expected number of times you have to throw that dice to see all its faces at least once. Assume that the dice is fair, that means when you throw the dic...原创 2018-08-07 20:41:22 · 217 阅读 · 0 评论 -
Lights inside 3D Grid LightOJ - 1284 (期望+取反问题)
You are given a 3D grid, which has dimensions X, Y and Z. Each of the X x Y x Z cells contains a light. Initially all lights are off. You will have K turns. In each of the K turns,1. You select...原创 2018-08-10 13:57:07 · 197 阅读 · 0 评论 -
Discovering Gold LightOJ - 1030 (概率dp+期望)
You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave can contain any amount of gold.Initially you are in position 1. Now each turn you throw a perfect 6...原创 2018-08-07 21:11:15 · 189 阅读 · 0 评论 -
A Dangerous Maze LightOJ - 1027 (期望dp)
You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors.If you choose the ith door, it can either...原创 2018-08-10 21:59:37 · 273 阅读 · 0 评论 -
Dice Possibility HihoCoder - 1339
What is possibility of rolling N dice and the sum of the numbers equals to M?InputTwo integers N and M. (1 ≤ N ≤ 100, 1 ≤ M ≤ 600)OutputOutput the possibility in percentage with 2 decimal plac...原创 2018-08-07 21:07:20 · 174 阅读 · 0 评论 -
Deque HDU - 4604(LIS)
思路等价于求从点i开始的最长上升子序列和最长递减子序列的长度之和(需要注意去重)。之所以这样考虑是因为:在i之后,比i大的数都可以放在i的后面,比i小的数都可以放在i的前面。求解方法:二分找,这样复杂度到了n*logn,同时要注意去重,去重的方法可以这样考虑,对数a[i],在找最长上升的时候用 a[i]去找,找最长下降的时候,用-(a[i]+1),只有考虑边界点的去重情况,因为中间不可能存...原创 2018-09-21 23:05:33 · 197 阅读 · 0 评论 -
Almost Sorted Array HDU - 5532(n*longn 的最长上升子序列)
思路用二分的思想求最长上升子序列,对于最长下降子序列,反过来再求一次最长上升就行了。代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+7;int n;int a[maxn];int dp[maxn],dp2[maxn];int main(){...原创 2018-09-21 18:41:50 · 186 阅读 · 0 评论 -
String HDU - 4681(最长公共子序列+暴力枚举)
思路在a,b,串中找到含有c串的序列,含有c串的序列必然不能取,所以只要确定了这样的序列,在两边分别找最长公共子序列+c的长度即可。由题目可知,C一定是A和B的子序列,那么先假设C在A和B中只有一个子序列,看下面例子:abcdefdegacebdfghcf可以看到"cf"在A串的[3, 6]区间内, 在B串的[2,6]区间(黄色背景)因为所求的C是D的子串,所以在该黄色区间内的其他字...原创 2018-09-21 14:24:14 · 918 阅读 · 0 评论 -
Optimal Array Multiplication Sequence UVA - 348(矩阵连乘问题,区间dp+记录路径)
思路:要求乘的次数最小,分析子最优子结构:任意一个区间的最小乘次数,取决于先乘那几个(等价于最后乘那两个),所以思路就是去枚举最后乘的那个就行。状态转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j]+a[i]*b[k]*b[j]) k>=i&&k<j;难点在于如何输出路径:可以在计算最小值的时候,记录枚举出的最小的k,也就是说dp[i...原创 2018-09-26 19:06:47 · 239 阅读 · 0 评论 -
Tower of Cubes UVA - 10051(DAG 上dp)
思路将六个面分成3个点对,这样就成了二元关系上的DAG,分别枚举以那个面作为入点(对面作为出点),找到最长的路径,同时记录下一个点就可以打印路径。dp[i][j]表示从第i个的第j面开始的最长路径.代码:#include <bits/stdc++.h>using namespace std;const int maxn=1e5+7;typedef long long ll...原创 2018-09-21 12:13:47 · 138 阅读 · 0 评论 -
Longest Increasing Subsequence HDU - 6284 (LIS+区间分解)
思路:因为改变的数是同一个,所以最后对LIS的贡献最多只能是1,所以可以先求出最长上升子序列长度,然后每个改变的数,考虑它对LIS的加成是1还是0.设a[i]表示已第i项结束的最长上升子序列长度,b[i]表示以第i项为起点的最长上升子序列长度。考虑在0的左边找一个a[i],在0的右边找一个b[j](并且c[i]<c[j]),如果a[i]+b[j]==L,那么将这个0改成其他数字,就有...原创 2018-09-29 12:58:18 · 372 阅读 · 0 评论 -
Stacking Boxes UVA - 103(DAG上的dp)
思路方法和刘汝家介绍的一样,先利用关系建图,然后dp计算从每个点开始的最大长度。需要注意的是,建图之前需要将各个维度从小到大进行排序。进行排序可以保证建图的完整性。#include <bits/stdc++.h>using namespace std;const int maxn=1e5+7;typedef long long ll;int n,k;int tmp[40]...原创 2018-09-21 10:12:40 · 149 阅读 · 0 评论 -
Removed Interval HDU - 5489(LIS+线段树加速)
思路一般的思路:先预处理得到f[i]以i结尾的最长上升子序列,g[i]以i开始的最长上升子序列。然后枚举去掉的L,从L+1项开始,那么答案应该是max(f[1]....f[i-L])+g[i]。所以问题的关键转化为求前i-L项中,小于a[i],并且f[]最大的值。对于小于a[i[这个条件,我们可以考虑使用离散化来实现(离散化后,只找它前面的项就可以保证),对于找最大值,那直接线段树或树状数组...原创 2018-09-22 00:39:15 · 207 阅读 · 0 评论 -
CRB and Apple HDU - 5406(双线LIS+多颗数组数组优化)
思路首先,考虑第1个LIS的最后一项是i,第二个LIS的最后一项是j。可以这样考虑状态转移d[i][j]=max(dp[i][k](k#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int maxn=1e3+7;const int inf=0x3f3f3f3f;int n;in...原创 2018-09-22 23:09:37 · 229 阅读 · 0 评论 -
Pearls POJ - 1260 (简单dp)
大致题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠。【规定买任一类的珍珠n个(价格为p),都要支付(n+10)*p的钱,即额外支付10*p】 例如样例Input的第二个例子:31 101 11100 12需要买第一类1个,第二类1个,第三类100个按常规支付为 (1+10)*10 + (1+10)*11 +...原创 2018-10-06 12:32:07 · 218 阅读 · 0 评论 -
最大全1正方形(简单dp)
描述 飞哥最近 得到 了一大块 n*m 的土地 ,他想在这块土地 上建一个正方 形的农场 ,但是 这块土 地有些地方 被大石头 占着,无法 使用 ,于是 飞哥想来问你 在这块土地 上能建成的农场 的最大 边 长为多少 ?输入 第一个数T表示数组组数每组 数据 一开 始有两个 整数 n和 m,表示 土地 的长和宽。接下 来是个 n*m 的矩阵 ,元素 只有 0 和 1 ...原创 2018-10-08 00:38:33 · 1353 阅读 · 0 评论 -
ACM 动态规划 POJ 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS 题解
题目: A sequence of positive integers is Palindromic if it reads the same forward and backward. For example: 23 11 15 1 37 37 1 15 11 23 1 1 2 3 4 7 7 10 7 7 4 3 2 1 1 A Palindromic sequence is U...原创 2018-03-27 21:49:28 · 378 阅读 · 0 评论 -
A - Altruistic Amphibians Gym - 101933A (贪心+dp)
题意:坑里有一堆青蛙,青蛙有身高、跳跃高度、体重。青蛙可以叠罗汉,但是不可以撑起超过自己体重的重量。问有多少青蛙可以跳出去。体重总和<=1e8思路:因为最重的青蛙肯定不能出去,所以应该是保证体重轻的能出去,而重的在底下,所以,先按体重排序。设dp[i]表示,体重为i的最大高度可以达到多少,那么判断dp[i]+h与d 的大小关系就知道这只青蛙能否出去了。因为能托起的青蛙不能超过最底...原创 2018-10-28 23:45:22 · 736 阅读 · 0 评论 -
leetcode Longest Palindromic Substring(动态规划求解最长回文子串)
https://leetcode.com/problems/longest-palindromic-substring/题意:求最长回文子串思路:动态规划,设dp[i][j]表示从i到j的子串是不是回文串,如果是dp[i][j]=1,否则dp[i][j]=0.状态转移:dp[i][j]=dp[i+1][j-1]&&s[i]==s[j]。注意边界条件。需要逆序遍历...原创 2019-02-23 16:01:14 · 345 阅读 · 0 评论 -
最大连续子序列
给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,...原创 2018-07-31 16:14:56 · 620 阅读 · 0 评论 -
Tour UVA - 1347 双调欧几里得旅行商问题(dp)
思路按照紫书的算法思路:考虑两个人同时从1点出发,走不同的路,到达n点。当一个人走到n-1点的时候,最后还需要走的路径是显然的,因为已经按x轴排好序,所以还要走的最小路径必然是dist(n-1,n)+dist(j,n) :j表示当第一个人走到n-1时,第二个人走到了j点,那么边界条件就被确定了。下面考虑递推:dp[i][j]表示第一个人在i点,第二个人在j点时,还需走的最小路程。那么dp[...原创 2018-09-20 21:22:04 · 355 阅读 · 0 评论 -
棋盘分割 POJ - 1191(暴力枚举型dp)
思路先预处理出前缀和,然后dp[k][x1][y1][x2][y2]表示,切k次,左上角为x1,y1,右下角为x2,y2的矩阵的最小均方差。 然后暴力枚举就行。 代码#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>#in...原创 2018-09-14 16:06:12 · 490 阅读 · 0 评论 -
Expression HDU - 5396 (区间dp +组合计数)
题目大意:给你一个n然后是n个数。 然后是n-1个操作符,操作符是插入在两个数字之间的。 由于你不同的运算顺序,会产生不同的结果。比如:1 + 1 * 2 有两种 (1+1)*2 或者 1+(1*2)1 * 2 * 3 也是两种即使结果是一样的 (1*2)*3 或者 1*(2*3)问这所有不同的组合加起来的和对 1e9+7取余是多少。 这个其实就是区间...原创 2018-09-24 13:55:43 · 187 阅读 · 0 评论 -
Substring CodeForces - 919D (图上dp)
You are given a graph with n nodes and m directed edges. One lowercase letter is assigned to each node. We define a path's value as the number of the most frequently occurring letter. For example, if ...原创 2018-08-11 21:38:28 · 185 阅读 · 0 评论 -
Little Tiger vs. Deep Monkey (状压转01背包)
A crowd of little animals is visiting a mysterious laboratory – The Deep Lab of SYSU. “Are you surprised by the STS (speech to speech) technology of Microsoft Research and the cat face recognition pr...原创 2018-07-31 23:01:03 · 421 阅读 · 0 评论 -
CodeForces Cards and Joy (dp)
There are nn players sitting at the card table. Each player has a favorite number. The favorite number of the jj-th player is fjfj.There are k⋅nk⋅n cards on the table. Each card contains a single in...原创 2018-07-31 21:50:37 · 271 阅读 · 0 评论 -
Multiplication Puzzle
The multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and scores the number of points equal to the pr...原创 2018-07-31 20:13:59 · 193 阅读 · 0 评论 -
Combine String
Given three strings aa, bb and cc, your mission is to check whether cc is the combine string of aa and bb. A string cc is said to be the combine string of aa and bb if and only if cc can be broken in...原创 2018-07-31 19:08:50 · 450 阅读 · 0 评论 -
Max Sum Plus Plus (dp+滚动数组)
Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we always challenge ourselves to more difficult problems. Now you are faced with a more difficult problem.Given...原创 2018-07-31 14:45:37 · 620 阅读 · 0 评论 -
Monkey and Banana HDU - 1069 (贪心+dp)
A group of researchers are designing an experiment to test the IQ of a monkey. They will hang a banana at the roof of a building, and at the mean time, provide the monkey with some blocks. If the monk...原创 2018-07-31 11:13:14 · 223 阅读 · 0 评论 -
Phalanx HDU - 2859
Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n*n, each element is a character (a~z or A~Z), st...原创 2018-07-27 15:27:45 · 211 阅读 · 0 评论 -
FatMouse and Cheese HDU - 1078
FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p < n and 0 <= q < n. At each grid lo...原创 2018-07-27 12:49:21 · 214 阅读 · 0 评论 -
Help Jimmy POJ - 1661
"Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台的边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX...原创 2018-07-26 21:33:02 · 339 阅读 · 0 评论