dp
文章平均质量分 79
czdb
这个作者很懒,什么都没留下…
展开
-
动态规划是什么,意义在哪里?!!!!
今天花了几个小时,重新理解了一下dp。。。首先我们要知道为什么要使用dp,我们在选择dp算法的时候,往往是在决策问题上,而且是在如果不使用dp,直接暴力效率会很低的情况下选择使用dp.那么问题来了,什么时候会选择使用dp呢,一般情况下,我们能将问题抽象出来,并且问题满足无后效性,满足最优子结构,并且能明确的找出状态转移方程的话,dp无疑是很好的选择。无后效性是什么呢,无后效性通俗的原创 2017-04-11 20:42:27 · 2429 阅读 · 0 评论 -
Storage Keepers UVA - 10163 (dp)
题目链接:点击打开链接题目思路:还是挺好想的,先用一次dp找出最大安全系数,再用一次dp找到最小花费,第一次dp定义前i个人看守j个最大安全系数,第二为前i个人看守j个并且安全系数大与第一个dp求出来的值的最小花费,同学用贪心加二分写了第一问让我很不爽QAQac代码:#include#include#include#include#include#include#inc原创 2017-08-17 21:34:35 · 194 阅读 · 0 评论 -
Alibaba UVA - 1632(区间dp+滚动数组)
题目链接:点击打开链接题目思路:有点久没写区间dp了,居然在纠结选哪一个作为起点,被自己蠢死,对于这道题来说根本不用关心这个问题,因为区间dp本来就枚举了每一个从小到大的区间,想通这一点,剩下的就很无脑了,唯一需要学习的就是这里用滚动数组优化内存的方法,对于区间dp我们可以发现每一次转移都这跟上一次区间长度有关,也就是用区间长度的递增来递推的,那么就很容易知道前面的长度基本上没什么用了,所以可原创 2017-08-18 13:44:59 · 214 阅读 · 0 评论 -
Team them up! UVA - 1627(dp+二分图+打印路径+连通分量)
题目链接:点击打开链接题目大意: 给出n个人,每个人都有认识的人,然后是否能分成两组,每组的人都相互认识,求两组最小人数差,不过不能分成两组,输出no solvnion。题目思路:一开始是挺没有思路的,如果仔细分析的话可以分析出,对于,每一个不相互认识的人可以看成二分图,因为只能分成两种人,一种相互认识,一种不相互认识,所以的话,我们把不相互认识的建图,有边存在的一定不能放在同一个集合原创 2017-08-11 22:39:38 · 361 阅读 · 0 评论 -
Auxiliary Set HDU - 5927(树形dp+思维)
Given a rooted tree with n vertices, some of the vertices are important. An auxiliary set is a set containing vertices satisfying at least one of the two conditions: $\bullet $It is an importa原创 2017-08-11 23:05:48 · 262 阅读 · 0 评论 -
hdu6148-Valley Numer(数位dp)
Problem Description众所周知,度度熊非常喜欢数字。它最近发明了一种新的数字:Valley Number,像山谷一样的数字。当一个数字,从左到右依次看过去数字没有出现先递增接着递减的“山峰”现象,就被称作 Valley Number。它可以递增,也可以递减,还可以先递减再递增。在递增或递减的过程中可以出现相等的情况。比如,1,10,12,原创 2017-08-20 13:18:05 · 527 阅读 · 0 评论 -
Dropping water balloons UVA - 10934 (dp,状态比较难想)
题目连接:点击打开链接题目大意:给你k个气球,n层楼,从大于气球硬度的楼层丢下会炸,小于则不会,问最小需要多少次可以确定气球硬度。题目思路:这道题的思路有点迷,我们知道如果只有一个气球的话,只能从最下面的那层楼,一层,一层往上试,因为只有一个气球。这道题知道这些仅仅是不够的,还是没有思路的,我们经过分析发现我们很难知道气球在哪一层会爆,哪一层会不爆,这个是肯定不知道的,所以我们可以尝试原创 2017-08-14 10:51:00 · 258 阅读 · 0 评论 -
Fixing the Great Wall UVA - 1336(区间dp+前缀和)
题目连接;点击打开链接题目大意:给出n个坏掉的东西的坐标,和 初始花费,以及增长速度,给出机器人的速度和初始坐标,问最少花费能修好全部东西。题目思路:很容易知道机器人修理好的东西一定是一个连续的区间,并且每一次都会有不同的决策们很容易知道是dp,我们定义状态dp[i][j]为修理好了i到j需要的最少花费,接下来很容易发现还需要知道机器人在区间的哪一端,所以我们定义状态dp[i][j原创 2017-08-14 15:48:54 · 271 阅读 · 0 评论 -
Kay and Snowflake CodeForces - 686D(树形dp,树的重心)
After the piece of a devilish mirror hit the Kay's eye, he is no longer interested in the beauty of the roses. Now he likes to watch snowflakes.Once upon a time, he found a huge snowflake that has a原创 2017-08-07 14:20:47 · 437 阅读 · 0 评论 -
The TSP problem SCU - 2842(状压dp,记搜)
DescriptionGive you n citys,the cost of travel from one city to another,you job is to find the minimum cost cycle which travels each city one time. InputThe first line of the input file contain原创 2017-08-07 15:57:28 · 333 阅读 · 0 评论 -
Protecting Zonk UVA - 12093 (树dp)
题目链接:点击打开链接题目思路:这道题真的明知道是到dp,但是定义状态也难,转移也难,决策也难,太菜。这道题网上有一个用标准树dp写的写法,但是我觉得太巧妙,比较难想,所以不打算采用那种写法。对于这道题来说最难处理就是b的那个装置,如果是只有a的话,无疑就是一道非常傻逼的题,但是多了b这个条件,有点难处理,那么这道题的切入点在哪呢,我们可以分析到,对于某一个节点来说如果它与它的父节点的某一条边原创 2017-08-21 21:10:03 · 352 阅读 · 0 评论 -
Bigger is Better UVA - 12105(dp+大数)
题目连接:点击打开链接题目思路:传说中这道题有3种做法,难想程度与实现难度成反比,我用了最容易想到的那种方法,dp[i][j]代表为用了i根火柴,余数为j的最大的数,这个还是容易想到一点,然后用刷表法更新状态,用大数实现一下,注意特判一下初始0的情况。ac代码;#include#include#include#include#include#include#includ原创 2017-08-15 10:27:27 · 270 阅读 · 1 评论 -
Free Candies UVA - 10118(记搜)
题目连接:点击打开链接题目思路:傻逼dp没什么好说的,状态转移的时候写成循环,不要学我QAQ#include#include#include#include#include#include#include#include#define LL long long#define INF 0x3f3f3f3f#define eps 1e-6using namespace s原创 2017-08-15 21:45:56 · 179 阅读 · 0 评论 -
Pangu and Stones(区间dp)
时间限制:1000ms单点时限:1000ms内存限制:256MB描述In Chinese mythology, Pangu is the first living being and the creator of the sky and the earth. He woke up from an egg and split the egg into two pa原创 2017-11-20 19:11:55 · 870 阅读 · 0 评论 -
X-Men HDU - 6233(暴力或者树形dp?)
There is a kingdom called Dream Kingdom with N cities connected by N−1 roads. There is a path between any two city. The length of each road is one kilometer. The cities are numbered from1原创 2017-11-15 23:47:41 · 610 阅读 · 0 评论 -
F. Teodor is not a liar!(强力分析+最长上升子序列)
题目连接:这里写链接内容 思路:这题题意很迷,也需要一定的脑洞,就是最多问几次使得问的人能确定是否存在一个整数点能被所有的线段覆盖,我们拼命分析,冷静分析,就能发现当存在两个峰的情况是可以确定答案的,那么就是找全部上升的,或者全部下降的,或者一边全上升,一边全下降的,用nlogn求最长上升子序列的方法求即可 accode#include<bits/stdc++.h>#de...原创 2018-03-24 11:22:58 · 368 阅读 · 0 评论 -
Locker UVA - 1631 (dp)
题目链接:点击打开链接题目大意:给出一个密码锁的当前状态和最终状态,每一次可以将连续的1~3个向上或者向下转动,问最少要转几次题目思路:很容易知道是dp题但是还是比较难想出状态转移和定义状态的,如果是第一次写这种类型,首先定义状态dp[i][j][k],代表第i位,第i位为j,i+1位为k,还需转动几次,为什么要这么定义呢,首先我们知道对于每一位来说肯定是要转到和目标状态相同的,那原创 2017-08-17 13:43:20 · 579 阅读 · 0 评论 -
Twenty Questions UVA - 1252 (状态压缩dp)
题目链接:点击打开链接题目大意:给出n个物体,每个物体有s个特征,每一次询问可以询问某个特征哪些有哪些没有,问最小询问多少次可以区分出每一个物体。题目思路:首先这道题的题意我感觉十分变扭,有点不好理解,其实在询问的过程中就是在构建一个新的01串,直到这个串只与所给串中的一个相同2,或者没有一个与之相同,所以问题就变成了,怎样构建一个·这样的01串使得与所给串中只有一个相同,或者一个原创 2017-08-08 21:44:11 · 341 阅读 · 1 评论 -
Cake slicing UVA - 1629 (记搜)
题目连接:点击打开链接题目思路:刚才已经写好了,结果csdn抽风,日了狗。。。,状态还可以这样定义,学到了学到了,不过想想也是,每一次切后的子蛋糕,明显就是一个最优子结构,定义状态dp[xa][ya][xb][yb]为左上角为xa,ya,右下角为xb,yb的最优答案,另外需要注意的就是一开始要吧dp值初始化为-1,对于0个的·返回INF,对于1返回0,一开始我都是初始化为INF,0,1都是原创 2017-08-16 10:28:54 · 191 阅读 · 0 评论 -
woj-Divide by Six
无解时输出-1s而不是WTF数据可能有前导零Input file: standard inputOutput file: standard output Time limit: 1 secondMemory limit: 512 mebibytesA positive integer number n is written on a blackboard. It con原创 2017-04-11 22:25:44 · 401 阅读 · 0 评论 -
csu:1919: 不醉不归
Description小X和他的朋友们在一起开心地喝酒,差不多喝完了,朋友们凑了K元钱让小X去小卖部买酒。因为是老客户,虽然每瓶酒的质量是不同的,不过小X买酒始终只需要1元一瓶。小卖部的酒摆在商品货架上,一共有N个摆着酒的货架,每个货架一开始都摆满了M瓶酒,每瓶酒都有一个自身的质量,可能千差万别。对于每个货架,小X每次只能拿货架最外面的那瓶酒。令小X感到开心的是,现在超市里的这一批原创 2017-05-10 19:19:22 · 394 阅读 · 0 评论 -
Tour UVA - 1347 (dp)
题目链接:点我题目大意:从最左边的点出发,到达最右边的边,然后再回来,除了终点和起点,其他的点只能走一次,问走过的最短距离。思路:lrj这个状态转移真是太吊了这道题明显的就是dp了,有那么多的子问题,那么我们怎么去定义状态呢,我们一开始很容易想到dp[i]表示到起点的最小距离,但是这样明显是错的,其实题目给了很好的提示,分两次走,那么我们可以这样想,一个人从上面走,一个人从下面走,原创 2017-05-25 19:27:31 · 268 阅读 · 0 评论 -
ccpc湘潭邀请赛 h-highway(树的直径)
HighwayAccepted : 33 Submit : 137Time Limit : 4000 MS Memory Limit : 65536 KBHighwayIn ICPCCamp there were n towns conveniently numbered with 1,2,…,n connected with (n−1) roa原创 2017-05-17 16:59:29 · 907 阅读 · 2 评论 -
小M和天平
Description小M想知道某件物品的重量,但是摆在他面前的只有一个天平(没有游标)和一堆石子,石子可以放左边也可以放右边。他现在知道每个石子的重量。问能不能根据上述条件,能不能测出所问的重量。Input多组输入,对于每组测试数据第一行一个数NN,表示石子个数。(1≤N≤100)(1≤N≤100)接下来第二行NN个数,表示石子的重量。(1≤Wi≤100)(1≤W原创 2017-04-26 16:24:26 · 510 阅读 · 0 评论 -
Defense Lines UVA - 1471
题目链接:https://cn.vjudge.net/problem/UVA-1471思路:第一步容易想到求出以i为终点的最长连续子序列f[i],以j为起点的g[j],那么答案就是max(f[i]+g[i]),那么怎么去找到i,和j能,那么最容易想到的就是暴力拉,枚举i,j,数据太大比超时,其实根据暴力的那个方法,我们可以想得到跟求LIS有点像,其实这个就是求LIS,不过这个只能求一段原创 2017-05-09 16:38:12 · 238 阅读 · 0 评论 -
Jin Ge Jin Qu hao UVA - 12563(背包dp)
题目链接:点我题目大意求给定时间内能唱的最多数量的歌曲,以及时间思路:一开始以为是求最大时间,然后疯狂wa,又看了遍题目才知道是求最大数量,这道题明显就是一道背包dp,定义状态cnt[i][j]为前i首歌在j时间内,最大能唱的歌曲数量因为还要算算出时间,其实我们有两种做法,可以通过记录路径,然后求出时间,但是这样子还是挺麻烦的,我们可以通过在开一个dp[i][j]与cnt同步更新,有一原创 2017-05-30 15:25:17 · 519 阅读 · 0 评论 -
最长公共子序列Lcs 51Nod - 1006 (线性dp)
给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为:abcicbaabdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Input第1行:字符串A 第2行:字符串B (A,B的长度 Output输出最长的子序列,如果有多个,随意输出1个。Sample原创 2017-05-30 15:42:05 · 560 阅读 · 0 评论 -
Lighting System Design UVA - 11400 (线性dp)
题目链接:点击打开链接题目思路:一开始是用贪心写的,y一直找不出来贪心为什么不行,有哪位可以说下嘛(orz)首先我们分析可以知道,如果要换一类灯泡的话,我们一定把所有的都换掉,因为,如果可以换的话,就说明被换掉的那一个的电源和单价都是比较高的,那么我们可以换的话,一定都把它换掉,还能省一个电源钱,根据题目的说法,我们很容易想到按照电压怕排个序,这样不仅之后不用考虑电压这个元素了,而且还原创 2017-05-30 16:22:34 · 348 阅读 · 0 评论 -
Partitioning by Palindromes UVA - 11584(线性dp)
题目链接:点击打开链接题目思路:一道明显的线性dp题,也比较简单,定义状态dp[i]为前i个最小回文串个数,状态转移为dp[i] = min(dp[i],dp[j-1]+1)下面说下为什么用dp,以及为什么这么设dp转移方程。为什么用dp呢,如果不用dp我们很容易想到从最后一个点出发(或者从第一个点出发),然后每一个位置都有删与不删两种选择,根据这两种选择继续生成子树(状态),然后原创 2017-06-01 18:05:46 · 392 阅读 · 0 评论 -
Color Length UVA - 1625 (线性dp)
题目连接:点击打开链接题目思路:这道题是紫书上的一道题,其实很明显是一道dp题,为什么呢,因为对于每一个字符什么时候去加入那个队列,都会产生一颗新的解答树,不用dp的话,大概复杂度,是o(2^n),其实我们仔细去发现对于父解答树,他只关心下一个子解答树的最优解,并不关心怎么来的,那么我们就可以想到用dp了,这道题定义状态还是非常简单的,dp(i,j)表示第一个移走了i个,第二个移走了j个,原创 2017-06-17 13:24:37 · 494 阅读 · 0 评论 -
51nod:数字1的数量(线性dp or 数位dp)
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。Input输入N(1 Output输出包含1的个数Input示例12Output示例5题目思路:这道题数据这么大显然不能直接求得,想原创 2017-06-13 14:15:05 · 376 阅读 · 0 评论 -
Cutting Sticks UVA - 10003 (区间dp,线性dp)
题目链接:点击打开链接思路:这道题明显就是一道区间dp了,也可以叫做线性dp,跟石子合并一样,为什么是区间dp呢, 根据题目意思,每一次切的花费为所切木棍的长度, 那么我们可能会尝试用贪心,去写,但是显然是不行的,为什么呢,用贪心的话只能保证当前最优解,并不能保证全局最优解,对于这道题来说,如果你选取了当前这一次的最优解,并不能保证从这个选择拓展出的下一次选择会是最优解, 所以贪心并不行。原创 2017-06-27 21:17:57 · 283 阅读 · 0 评论 -
石子归并 CSU - 1592 (区间dp,线性dp)
现在有n堆石子,第i堆有ai个石子。现在要把这些石子合并成一堆,每次只能合并相邻两个,每次合并的代价是两堆石子的总石子数。求合并所有石子的最小代价。Input第一行包含一个整数T(T每组数据第一行包含一个整数n(2第二行包含n个正整数ai(aiOutput每组数据仅一行,表示最小合并代价。Sample Input241 2 3 453原创 2017-06-27 21:41:02 · 919 阅读 · 0 评论 -
Headmaster's Headache UVA - 10817 (状态压缩dp+01背包)
题目链接:点击打开链接题目大意:让所有课程都有至少两个老师可以教,需要支付的最少工资;题目思路:很容易想到是一个背包dp,对于每一个教师有选和不选两种选择每一种选择都会产生新的状态,接下来的问题就是怎么表示状态呢,一开始我想的是用三进制表示状态,想法是没有错的,但是状态的转移的时候比较麻烦,但是也是可行的,玄学的是我写的居然超时了,总共才4百万的数据量居然超了,改来改去还是没改好,后面我决原创 2017-08-08 11:30:59 · 228 阅读 · 0 评论 -
F. Mars rover Codeforces Round #499 (Div. 2)(树形dp)
F. Mars rover time limit per test 5 seconds memory limit per test 256 megabytes input standard input output standard outputNatasha travels around Mars in the Mars rover. But suddenly it brok...原创 2018-07-27 17:01:56 · 319 阅读 · 0 评论