![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DP
DP
这里是一只小小琪
这里是一个追星程序员女孩
展开
-
Vladik and Memorable Trip 【CodeForces - 811C】【DP】
题目链接题目大意题意有点难读,有点绕:就是有一个长度为n的序列,要把这个序列分成若干个子串,然后挑选几个子串让他们的异或和最大,相同的数字必须早同一个子串里解题思路比赛的时候就知道是个DP,奈何DP差的不忍直视dp[i]就是1到i直接的子串异或和最大值每次枚举新加的数可以组成的新的子串更新答案#include<bits/stdc++.h>using namespace...原创 2019-11-01 09:19:46 · 128 阅读 · 0 评论 -
[编程题]牛牛的数列 【牛客网】【DP】
题目链接链接:牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。解题思路连续子序列就是子串的意思!用两个数组endd[]和beginn[]来表示到e[i]这个元素,起始和结束的最长递增子序列的长度然后枚举断点就好了#include&...原创 2019-10-25 20:16:40 · 1431 阅读 · 1 评论 -
A Twisty Movement 【CodeForces - 933A】【DP】
题目链接题目大意有一串长度为n的只含有1,2的数组,现在可以随意的反转其中的一段【l,r】区间,使得最后的新数组的最长不下降子序列最长解题思路用一个数组记录从前向后第i的位置的位置的最长不下降子序列的长度qian[i]再用给一个数组记录从后向前第i的位置最长不上升子序列的长度hou[i]然后枚举断点,新的数组的最长不下降子序列的长度就是qian[i]+hou[i+1];#includ...原创 2019-10-25 16:47:12 · 219 阅读 · 0 评论 -
The Moon 【HDU - 6558】【期望DP】
题目链接题目大意有一个游戏分为4步1.初始概率q=2%;2.玩家一轮游戏赢的概率为p,如果他这轮赢了,将进入步骤3,否则进去步骤43.玩家有q的概率得到一个玩具,如果得到玩具,游戏结束,如果没有得到玩具就让q变为min(100,q+2%);4.让q变为min(100,q+1.5%);问游戏轮数的期望解题思路这个题的递推公式还是简单的,一共有三种情况,要么拿到玩具结束,要么让q+...原创 2019-10-14 21:39:14 · 215 阅读 · 0 评论 -
Lucky Coins 【HDU - 5985】【概率dp】
题目链接题目大意有n种硬币,每次拍一下桌子会有的硬币面向下,把朝向下的硬币拿走,接着拍桌子,直到只剩一种硬币为止,那个硬币就是幸运硬币,给你每种硬币的数量和每次拍桌这种硬币面向上的概率,问每种硬币成为幸运硬币的概率是多少解题思路设die[i][j] 表示第i种硬币在第j轮全部死亡的概率那么die[i][j]=(1.0 - p[i] j ) num[i]设li [i][j]表示这种硬币在...原创 2019-10-11 20:30:25 · 143 阅读 · 0 评论 -
劲歌金曲 【UVA - 12563】【DP(01背包)】
题目链接题目大意求在给定时间内,最多能唱多少歌曲,在最多歌曲的情况下,使唱的时间最长。解题思路虽然说t特别大,但是n之后50且每首歌的时间不超过180,所以可以把问题转化为01背包,我本来以为这个题是让求最多可以唱多久的歌。。。然后疯狂wa,读题真的很关键啊#include<stdio.h>#include<string.h>#include<algor...原创 2019-08-09 14:08:06 · 80 阅读 · 0 评论 -
划分为回文串 【UVA - 11584】【DP】
题目链接题目大意一个字符串,输出最少可以划分为多少个回文子串解题思路先预处理一下从i-j是不是回文串然后d[i] 代表从1到i最小可以划分为几段。d[i]=min(d[i],d[j-1]+1)//当i-j为回文串时#include<stdio.h>#include<string.h>#include<algorithm>using names...原创 2019-08-12 09:11:13 · 138 阅读 · 0 评论 -
颜色的长度 【UVA - 1625】【DP】
题目链接题目大意输入两个长度分别为n和m的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部。对于每个颜色c来说,其跨度L(c)等于最大位置和最小位置之差。解题思路我们用dp[i][j]表示从第一个串中拿了i个字母,从第二个串中拿了j个字母的花销。用c[i][j]表示截止到第一个串的i位置和第二个串的j位置的时候,已经出现并且还没出现完的字母有多少个。...原创 2019-08-16 14:46:07 · 201 阅读 · 0 评论 -
切木棍 【UVA - 10003】【区间DP】
题目链接题目大意有一根长为n的木棍,截一次木棍的代价为这个木棍的长度,现在知道要在这个木棍的哪里切割,问你最小的代价是多少解题思路写的时候没有看出来是个区间DPdp[i][j]代表的是在第i个切割点和第j个切割点之间切割的最小代价那么:dp[i][j]=min(minn,dp[i][k]+dp[j][r]+a[j]-a[i]);(k是区间i,j中的断点)#include<std...原创 2019-08-17 16:44:26 · 198 阅读 · 0 评论 -
Robots 【计蒜客 ICPC南京网络赛】【期望DP】
题目链接题目大意有一个有向无环图,现在要从点1走到点n,第i天的花费为i,每天可以按照路走向相邻的饿节点或者保持不动,问走到点n的期望解题思路我们用天数期望去推花费期望天数:me[u]=(1/(k+1))* (me[v]+1) +(1/(k+1))* (me[u]+1)花费:dp[u]=(1/(k+1))* (me[v]+dp[v]+1)+ (1/(k+1))* (dp[u]+dp[...原创 2019-09-04 10:53:34 · 106 阅读 · 0 评论 -
Pangu and Stones 【HihoCoder - 1636】【三维区间DP】
题目链接题目大意有n个石子,每次选择连续的大于等于L个且小于等于R个的石子合并,问最后合并成一堆石子的最小花费解题思路区间dp还是很明显的,不过要加一维,是dp[i][j][k]的意思是i到j这个区间分成k堆的最小花费感觉自己的dp学的还是不行,就多了一维差点给我搞去世当k==1的时候:dp[i][j][1] = min ( dp[i][j][1] , dp[i][p][x] + d...原创 2019-09-28 10:31:39 · 134 阅读 · 0 评论 -
Puzzle Game 【HihoCoder - 1634】【最大子矩阵】
题目链接题目大意有一个n*m的矩阵,问你修改一个数(也可以不修改),矩阵中的最大子矩阵的最小值是多少解题思路#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int N=205;int u[N],d[N],l[N],r[N],sum...原创 2019-09-30 09:16:15 · 139 阅读 · 0 评论 -
单向 DSP 【UVA - 116】【DP+输出路径】
题目链接题目大意有一个n*m的带权方格,第一行和最后一行是连通的,一个人想从第一列走到最后一列用最小的花费,他每次可以从第i列走到第i+1列,方向是向右或者向右上方或者右下方。输出最小的花费和路径,路径要求是字典序最小的。解题思路转移方程是很好写的,就是三个方向转移一下,不好搞的是那个路径,要自字典序最小,所以我们要从后往前,从最后一列开始转移,这样比较好控制,从第一列开始的话,我们记录的...原创 2019-08-09 10:52:39 · 154 阅读 · 0 评论 -
地铁里的间谍 【UVA - 1025】【DP】
题目链接题目大意某城市的地铁是线性的,有n(2≤n≤50)个车站,从左到右编号为1~n。有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开。在时刻0,Mario从第1站出发,目的是在时刻T(0≤T≤200)会见车站n的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的总时间尽量短。列车靠站停车时间忽略不计,且Mario身手敏捷,即使两辆方向不同的列车在...原创 2019-08-07 10:52:59 · 161 阅读 · 0 评论 -
self 同类分布 【HYSBZ - 1799】【数位dp】
题目链接给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。刚开始的时候题目看错了,以为是【a,b】所有数的和,能整除这个区间的数有几个。然后数据范围还这么大,就开始懵逼,后来发现题看错了。其实这个题是个数位dp,因为各位数的和最多有个9*17所以,我们去枚举一下各位数的和,然后去dp。看有多少个数可以整除当前数位的和。其他的就是正常的数位dp啦。#include<s...原创 2019-08-06 10:30:02 · 104 阅读 · 0 评论 -
Help Me Escape 【ZOJ - 3640】
题目链接大概题意有一个人被困在了一个山里,有n条路,每条路有一个法力值ci,你现在的法力值为f,每天这个人被随机的放在一个路口,如果可以这个人的法力值大于这条路的法力值的话,就可以按照题目给你的方程计算出逃离需要的时间,如果小于等于的话,这个人将用一天把自身的法力值将加上这条路的法力值,问你逃离这n条路的天数期望解题思路刚开始的时候没有看懂题意,我以为打不过这条路用一天加上这条路的法力值之...原创 2019-05-10 21:15:47 · 158 阅读 · 0 评论 -
LOOPS 【HDU - 3853】
题目链接题目大意现在有一个n*m的格子,小H站在位置(1,1)要去到(n,m),每个格子(i,j)可以到达它自己或者左边的格子或者右边的格子并且要花费2个精力值,问你到(n,m)所花费的精力值的期望。解题思路我们设(i,j)到本身的概率,到右边的概率,到下面的概率分别为p1[i][j] , p2[i][j] , p3[i][j];dp[i][j]表示(i,j)到(n,m)所需要的精力值...原创 2019-05-11 09:06:03 · 173 阅读 · 0 评论 -
Accumulation Degree 【POJ - 3585】
题目链接题目大意找出一个点,从这个点出发到所有叶子节点可以流经的权值最大,输出这个最大的权值解题思路这个题就是跑两遍dfs第一遍dfs的时候我们处理出以这个节点为根所有的子树中,最大的流量我们用zi[x]来表示。那么zi[] 的转移状态可以这样写 if(du[v]==1) zi[u]+=e[i].w; else zi[u]+=min(zi[v],e[i].w)...原创 2019-05-16 09:39:57 · 298 阅读 · 0 评论 -
Naptime 【POJ - 2228】
题目链接题目大意有一只牛要休息m个时间段,现在有n个时间段可以供选择,一个时间段有一个睡眠价值,这m个时间段可以连续也可以不连续,每次睡觉的第一个时间段时不获得睡眠价值的,这个牛可以从第一天的晚上睡到第二天的早上,也就是第n个时间段是连着第一个时间段的。问这个牛可以获得的最大的睡眠价值是多少?解题思路我们先不考虑环形的问题,如果他就是一个正常的线性dp的话,我们设dp[i][j][0]表示...原创 2019-05-16 17:00:01 · 318 阅读 · 0 评论 -
Broken robot 【CodeForces - 24D】
题目链接大概题意在一个n*m的格子上,有一个人位于(x,y)这个人每次可以走一步走到现在为止,左边的位置,右边的位置和下面的位置,问你他走到最后一行的步数期望值。解题思路我们设dp[i][j]为现在在(i,j)的位置走到最后一行所需要的步数期望所以我们可以列出这样的式子:当在第一列的时候:dp[i][1]=(dp[i+1][1]+1) * 1/3+(dp[i][j+1]+1) * 1...原创 2019-05-17 10:43:32 · 237 阅读 · 1 评论 -
FATE 【HDU - 2159】
题目链接最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能升掉这最后一级吗...原创 2019-05-13 10:34:54 · 620 阅读 · 0 评论 -
Polygon 【POJ - 1179】
题目链接题目大意现在有一个n边形,每个顶点有一个值,每一条边有一个操作(加或者乘),首先先删除一条边使其变成一条链状的,然后按照操作合并相邻的点,直到最后只剩一个点,求最后那个点的最大值和第一步删除那个边可以得出那个最大值解题思路神一般的负负得正… … …如果只找最大值的话,可能得不到最大值,可能两个负数相乘得到的值更大… …其他的就和正常的区间dp是一样的,先枚举第一步去掉的是哪个边,...原创 2019-05-13 17:18:56 · 161 阅读 · 0 评论 -
Mondriaan's Dream 【POJ - 2411】
题目链接题目大意有一个n * m的格子,铺满1 * 2的地砖有多少种方式解题思路是个状压dp的板子题一个是穷举的状压dp,一个是轮廓线dp存一下这两个博客讲的还是很详细的状压版轮廓线版#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;lon...原创 2019-05-17 20:13:49 · 146 阅读 · 0 评论 -
炮兵阵地 【POJ - 1185】
题目链接司令部的将军们打算在NM的网格地图上部署他们的炮兵部队。一个NM的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向...原创 2019-05-28 09:23:19 · 94 阅读 · 0 评论 -
Cleaning Shifts 【POJ - 2376】
题目链接题目大意给你n个时间段【l,r】,问你最少多少个区间可以覆盖【1,t】。解题思路因为这个题再dp专题里,所以直接打了一发dp(二维)然后妥妥的超时。。。。。。其实这个题用贪心就可以做出来我们设lr是上一次覆盖到的最远的距离,那么我们每次找到每个区间l小于lr的r最远可以覆盖到的距离。然后一直贪心就好了#include<stdio.h>#include<st...原创 2019-05-28 10:58:00 · 126 阅读 · 0 评论 -
Mountain Scenes 【Gym - 101002F】【DP】
题目链接题目大意有一个w*h的格子,现在有n米长的绸带,现在用绸带去铺这个格子,填充的格子形状不能是所有列都一样高的,绸带可以用任意米。问有多少种填充法。解题思路dp[i][j]代表用了j米的绸带有i列上有绸带;那么枚举第j列上放了多少米的绸带就可以转移方程了#include<stdio.h>#include<string.h>#include<alg...原创 2019-08-01 17:39:31 · 132 阅读 · 0 评论 -
Favorite Dice 【SPOJ - FAVDICE】
题目链接大概题意有一个n面的筛子,问你抛出n个面所需要的期望次数解题思路先试了一下规律,试出来期望次数等于n/1+n/2+n/3+… … …+n/n;还有第二种dp的做法:我们设dp[i]表示现在已经抛出了i个面,那么转移方程就是dp[i] = dp[i-1] + n/(n+1-i);也就是dp[i-1]已经抛出了i-1个面所需的期望次数,还有n-(i-1)个面所以是加上 n/(n...原创 2019-05-10 19:56:28 · 137 阅读 · 0 评论