![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
loyxCCS
这个作者很懒,什么都没留下…
展开
-
A Spy in the Metro, ACM/ICPC World Finals 2003, UVa1025
题目描述有n个车站,编号1到n。从1号车站开往n号车站的列车有M1趟,发车时间为。从n号车站开往1号车站的列车有M2趟,发车时间类似。列车驶过每两个车站间的用时为。现在有一个间谍,0时刻在车站1,他要在T时刻到达车站n。求间谍在车站逗留的最短时间。题解一道动态规划的好题。自己初学动态规划,结合该题记录一下自己的感悟。动态规划中有几个概念:阶段:把所给求解问题的过程恰当地分成若干...原创 2018-08-12 17:24:48 · 230 阅读 · 0 评论 -
[树状dp] Perfect Service UVA1218
题意给一棵无根树,可将其中一些节点选为服务节点,每个服务节点可以服务其相邻节点。要求每个节点只被服务一次或者被选为服务节点,求满足要求的服务节点数量最少。题解本题前后用时2h,回头来看其实也是一道简单的树状dp。在做本题时,自己的想法与紫书上的不谋而合。开始考虑时想直接借鉴最大独立集的状态定义(d(i)表示i子树的答案),但之后发现如果这样定义,那么在转移中就无法确认转移合法(满足...原创 2018-09-27 20:58:48 · 175 阅读 · 0 评论 -
[树状dp] Party at Hali-Bula UVA1220
题意有人要邀请一个等级森严的公司里的一些员工参加聚会,但如果邀请了某个员工的上司,那么这个人就不会参加聚会。求能参加聚会的最大人数和邀请方案是否是唯一的。题解看到本题第一想法是套最大独立集,由于还要求邀请方案是否唯一,就采用类似刷表的标记。虽然AC了,但代码感觉很丑。紫书上给出了领一种动态规划的方法。感觉紫书上的方法更好一些。动态规划做到现在也有点能区分出各种动态规划的区别了,...原创 2018-09-20 20:13:08 · 178 阅读 · 0 评论 -
[线性dp] Color Length UVa1625
题意输入两个长度分别为n和m的颜色序列,要求按顺序合并成同一个序列,即每次把一个序列开头颜色放到新队列的尾部。对于每种颜色,函数L(c)表示新队列中该种颜色最后一次出现的位置坐标减第一次出现的位置坐标。现求所有L(c)之和的最小值。题解在解决本题的过程中,该题中的一些想法得到了实践,并且取得较好的效果。但在写状态转移方程的过程中遇到困难——没有找到指标函数。自己理解的指标函数是:在...原创 2018-09-07 18:41:31 · 218 阅读 · 0 评论 -
[线性dp] Mathematical Curse
题意有n个数字,m个运算符合(包括+、-、*、/)。给定初值k,求将所有符号用完,可得到的最大值。题解本题形式上是一个简单的线性dp,但是由于题目的特殊性,需要同时维护最大值和最小值。而这一点是我之前没有考虑过的。之前,自己对dp的理解就是,将dp定义为题目要求的答案,之后按照顺序转移状态即可。但是,我忽略了他们之间一个共同点:每一步转移都只会从之前状态的一个值转移过来,而且在我之...原创 2018-09-17 23:11:06 · 171 阅读 · 0 评论 -
[多段图] Unidirectional TSP UVa116
题意给一个m行n列的整数矩阵,从第一列的任何位置出发每次向右、右上、右下移动一格,最终到达最后一列。求走过的整数之和最小。题解简单dp,注意答案还要求字典序最小。AC代码#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#inc...原创 2018-09-03 12:53:59 · 154 阅读 · 0 评论 -
[区间dp] Brackets sequence Uva1626 (待)
题意给一个只由 ‘(’ ‘)’ ‘[’ ‘]’ 组成的字符串,但其中并不是所有的括号都是匹配好的。求最少插入几个括号后可使源字符串中的所有括号匹配好,输出插入后的字符串。题解本题虽然输入输出有一些坑,但找状态、写状态转移方程并不难。这里说说对于区间dp的理解。相对于线性dp来说,区间dp可以在线上任意一点分成两个子问题。而线性dp的处理方向一般是单向的,且分为的是子步骤。需要注...原创 2018-09-11 22:38:06 · 150 阅读 · 0 评论 -
[线性dp] Partitioning by Palindromes UVa11584 (待,预处理)
题意给一个字符串,求这个字符串最少可以分割成几个回文串。题解很简单的线性dp。但是,不做预处理的复杂度是,预处理后可以降到。对于预处理的各种想法日后在整理。。。AC代码#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#in...原创 2018-09-05 12:59:29 · 173 阅读 · 0 评论 -
[线性dp] Lighting System Design UVa11400
题意你的任务是设计一个照明系统。一共有n种灯泡可选,不同的灯泡需要不同的电源,而同一种灯泡可以共用一个电源。每种灯泡用4个值表示,所需电压V,电源价格K,灯泡单价C,所需个数L。为节省费用,可以用高电压灯泡代替低电压灯泡(如果能节省费用,且总灯泡数不能少)。求最少费用。题解题目的状态和动态转移方程不难写,但是有一个非常重要且有意思的预处理——按电压对所有灯泡排序。做一个猜测,排序的...原创 2018-09-05 12:53:22 · 163 阅读 · 0 评论 -
[DAG] Tour UVa1347
题意有n个点,以x值的大小顺序给出。求从第一个点(最左端的点)出发,到最后一个点(最右端的点),再返回第一个点的最短路径长度,要求每个点都只能经过一次。题解感觉这题的思维量特别大,独立做不容易想。状态和状态转移方程确定的很巧妙。本题的状态有两个变量,设表示1~都已经走过,且目前在i和j处还需要走的最短长度。对于该题,我有几点想法(当然日后可能打脸)1. 对于一个较为困难的问...原创 2018-09-02 22:15:00 · 200 阅读 · 0 评论 -
[01背包] Jin Ge Jin Qu hao UVa12563
题意假定你正在唱KTV,还剩下t秒时间。你决定只唱你最爱的n首歌,并在时间结束之前再唱一首《劲歌金曲》,使得唱的总曲目尽量多,在此前提下尽量晚的离开KTV。题解题目中t的范围是1e9但实际的t不会超过10000,这就可以转化为01背包问题。AC代码#include <cstdio>#include <cstring>#include <alg...原创 2018-09-04 11:00:16 · 222 阅读 · 0 评论 -
Axles UVALive 7197
题意您正在经营一家为无线电控制汽车生产定制车轴的机加工车间。这些车轴可以用钢或不锈钢制造,不锈钢零件的价格通常来自普通钢。您有两台CNC车床:一台配置生产不锈钢零件,另一台配置生产钢制零件。在给定的生产运行中,特定的零件设计只能分配给两台机器中的一台,即相同的零件设计可以用钢或不锈钢制造,但不能同时制造。零件由坚固的材料棒制成;今天你的库存水平相当低,你只有一根钢棒和一根不锈钢棒。零件设计选自...原创 2018-08-20 23:21:48 · 229 阅读 · 0 评论 -
The Tower of Babylon, UVa437
题意有n种长方体,每种有无线个。要求选一些长方体摞成一个尽可能高的柱子,每个长方体底面的长宽严格小于它下方长方体底面的长和宽。题解这是一道DAG上的动态规划。如何分析题目,将其转化为DAG上的动态规划是该题的关键。但是,我不是很清楚具体的思维过程是什么。其次,动态规划的关键是状态转移方程。代码如何实现要根据转态转移方程写。AC代码1.记忆化搜索#include <...原创 2018-08-14 18:13:14 · 178 阅读 · 0 评论 -
[01背包] Pieces of Parentheses (未完)
题意有n个只含左右括号的字符串(长度不超过300),求选出几个字符串组成一个括号匹配的字符串的最大长度。题解开始考虑时,想用三个状态变量表示状态。定义表示处理到第个字符串,待匹配的左右括号数分被为和时的最大长度。状态转移方程为。实现时用刷表的方法。然而这样写有一个很大的问题,这种dp只能处理左右待匹配的括号数最大只有300的情况。而本题最多会有90000个待匹配的左(右)括号。这样...原创 2018-10-09 23:51:56 · 254 阅读 · 0 评论