DP
姬小野
这个作者很懒,什么都没留下…
展开
-
最大子段和_三种方法
今天参加了一场洛谷网的比赛, 深受打击. 寒假过了这么多天, 一直没有认真学习算法, 以至于现在的水平比两个月前还要低. 本来就没有多少底子, 又退步了许多, 感慨万分.在洛谷上看到这么一道题 最大子段和如果数据小的话, 用暴力枚举很简单就可以做出来了, 时间按复杂度位O(n^3) 可是一道算法题怎么会这么简单呢?样例的数据是非常大的, 所以用n^3的办法一个样例都过不了...原创 2018-02-09 20:36:11 · 1386 阅读 · 0 评论 -
算法分析与设计-第二次实验
文章目录01背包问题部分背包问题会场安排问题树的最大连通分支算法设计与分析课的实验,一共四道题目,都是用文件读写,并且给出了每道题的随机数据生成方法。博客仅放上代码,以供参考。01背包问题#include <iostream>#include <fstream>#include <ctime>using namespace std;const ...原创 2019-04-02 12:59:01 · 440 阅读 · 0 评论 -
简要题解-图论-搜索-并查集-dp-树形-拓扑-tarjan等等
[USACO09NOV]找工就业Job Hunt [图论,spfa,最长路]attentions:对我而言非常好的一道题!最长路!有几个点 1、这道题转化成最长路来求解,方法和最短路类似 2、但这道题是点有正权且只有负权边,且路径为单向!那么精妙之处在于,可以将点权转化为边权!!! 3、由于题目中可能出现正环(和最短路相反!),所以需要使用SPFA(判环和最短路类似)!P26...原创 2018-09-16 10:18:02 · 379 阅读 · 0 评论 -
P1119 灾后重建-省选floyd!!!
P1119 灾后重建题目背景BBB地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。题目描述给出BBB地区的村庄数NNN,村庄编号从000到N−1N−1N-1,和所有MMM条公路的长度,公路是双向的。并给出第iii个...原创 2018-09-15 17:51:40 · 170 阅读 · 0 评论 -
环形石子合并问题
环形石子合并问题是在普通的相邻石子合并问题的基础上稍加拓展,石子变成了环形的,也就是说每个石子都可能和其左右两边的石子合并。那么它的dp解法也是基于普通的相邻石子合并问题,不了解的同学可以参考我写过的这篇文章。有两种解法,但他们基本的算法思想是一样的。第一种是和上面链接文章的写法类似,不同的是对于需要绕圈的点,普通的相邻石子合并问题是直接跳过(因为它无法到达),而对于环形的,有两种...原创 2018-09-08 22:47:23 · 4209 阅读 · 0 评论 -
矩阵链乘法—DP
矩阵链乘法是这样的问题: 给定n个矩阵:A1,A2,…,An,其中Ai与Ai+1是可乘的,i=1,2…,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数。我们称有如下性质的矩阵乘积链为完全括号化的(fully parenthesized):它是单一矩阵,或者是两个完全...原创 2018-09-08 20:42:16 · 660 阅读 · 0 评论 -
CCF 201312-4 有趣的数_数位DP
CCF 201312-4 有趣的数 传送门这道题似乎就是所谓数位DP, 如果没有接触过这一类题目, 真的是很难会想出完整的方法, 毕竟有6个状态, 然后在状态之间进行递推.我们定义六种状态, s0-s5, 对每个长度的状态我们都从其他可能推过来的状态推过来.为什么是六种? 这六种状态是哪六种?这些状态分为四大类:分别有1,2,3,4个数字的情况.只有一个数字的状态:s0:只...原创 2018-08-14 00:22:25 · 248 阅读 · 0 评论 -
Tarjan算法缩点+DAG最长路(DP)
第一个问题: Tarjan算法找出一个图里面的全部强连通分量(包括单独的点).第二个问题: 对每个强连通分量进行缩点, 使得此图变成一张DAG.第三个问题: 如何快速获得新图各个结点的入度出度.第四个问题: 缩点之后求解DAG最长路我们按照复杂程度来讨论不同的Tarjan算法变形的差异.第一个问题: Tarjan算法找出一个图里面的全部强连通分量(包括单独的点)....原创 2018-08-13 18:20:49 · 1560 阅读 · 0 评论 -
CCF 201612-4 压缩编码_石子合并问题_DP
201612-4 压缩编码 传送门想了很久, 还是没有独立做出来. 虽然从问题中抽象出来了是一个什么样的问题. 下面是自己想的思路如果这棵树一定要保持叶子节点字典序递增的话,前序遍历的顺序就是字典序. 那么一个结点(按顺序输入的),只能和相邻的结点合并. 合并n - 1次之后, 结果就是一棵维持字典序递增的树的长度. 但是这种合并有很多种情况,答案就是所有情况里面结果最小的...原创 2018-08-07 19:25:20 · 848 阅读 · 0 评论 -
DP_DAG最长路径_关键路径
DAG最长路DAG最长路径以i为终点的最长路径DAG最长路DAG指的是有向无环图, 求它的最长路径有一种DP方法.我们建立一个数组dp[n+1], dp[i]代表从这个结点出发的最长路径, 那么要求出dp[i], 我们只要求出从i出发的下一结点的dp[j], 使得dp[i] = max(dp[i], dp[j] + G[i][j]), 这就是它的状态转移方程....原创 2018-07-12 09:53:45 · 3740 阅读 · 0 评论 -
DP_最长公共子序列
最长公共子序列也是简单的DP问题, 问题描述是: 对两个字符串, 求他们的最长公共子序列的长度, 所谓公共子序列可以不连续. 如”sadstory” 和 “adminsorry”, 所长公共子序列为adsory. 长度为6分析这道题, 用到经典的二维DP思想, 把大问题化解为子问题. 对S1的每个i,长度序列 和S2的每个j长度序列, 最优解是多少, 大问题的最优解就是基于子问题...原创 2018-07-11 09:38:40 · 141 阅读 · 0 评论 -
DP_最长回文子串
DP问题, 最长回文子串最长回文子串问题指的是在一个字符串中, 是回文子串的长度的最大值. 这里的回文子串是连续的. 如字符串”PATZJUJZTACCBCC”, 他的最长回文子串是”ATZJUJZTA”, 长度为9, 当然它还有其他回文子串如”CCBCC”, 但是长度不够长.这类问题似乎有多种解法, 复杂度从O(n^3)到O(n)不等.下面介绍一种时间复杂度为O(n^2)的....原创 2018-07-11 09:18:48 · 991 阅读 · 1 评论 -
DP_最长不下降子序列(LIS)
序言同类的问题还有“最长上升子序列”, “最长下降子序列”, …他们的不同就在于定义的core规则不同, 有的是&gt;=, 有的是&gt;, 有的是&lt;由此启发, 我们可以在解决其他的问题, 不一定是比较数的大小的问题里面抽象出这种模型.下面介绍这种动态规划入门都会介绍的问题的思路. 首先我们从头开始分析这个问题.一. 最容易想到的最暴力的方法对这个序列中的每...原创 2018-07-11 08:39:59 · 8809 阅读 · 0 评论 -
暑假编程训练_数塔取数
数塔取数这是一道入门的动态规划题, 没做过的可能很难想出, 但是做过的会觉得很简单. 这道题相比最基础的数塔取数多了一个求路径. 只要记录所继承的下一层数的下标. 最后从头开始走过这些下标就是路径了. 时间复杂度是O(n), n为数塔的数的个数.#include &amp;lt;iostream&amp;gt;#include &amp;lt;cstring&amp;gt;using namespace st...原创 2018-07-09 16:04:15 · 172 阅读 · 0 评论 -
方块与收纳盒_走楼梯
题目描述 现在有一个大小n*1的收纳盒,我们手里有无数个大小为1*1和2*1的小方块,我们需要用这些方块填满收纳盒,请问我们有多少种不同的方法填满这个收纳盒 输入描述: 第一行是样例数T 第2到2+T-1行每行有一个整数n(n<=80),描述每个样例中的n。 输出描述: 对于每个样例输出对应的方法数。 示例1 输入 3 1 2 ...原创 2018-01-23 18:33:23 · 378 阅读 · 0 评论 -
DP动态规划_01背包问题
动态规划是一种思想, 因为很违背直觉, 所以初学时理解起来很困难, 和递归一样, 都是比较奇妙的思想.01背包问题是各类背包问题(见背包九讲)中最简单的一种模型, 但是理解它也花了我很多时间.网上和各种算法书籍都有关于背包问题的讲解.刚做了两道基础的01背包问题, 遇到了几个问题, 也靠自己解决了它们两道题: 1) 洛谷1048-采药 2) 洛谷1049-装箱问题...原创 2018-02-11 23:56:49 · 302 阅读 · 0 评论 -
带权的活动安排问题-利益最大化-DP
基础的贪心问题-活动安排问题是这种问题的特殊情况(权值为1)。但这个问题不能用贪心算法而是应该用动态规划算法来求解。这种问题下的另一种较特殊情况是每段任务的权值是它的时间长度,使活动安排时间最满,同样要用到动态规划算法。思路是:先将活动按照结束时间排序(和贪心类似),然后从第一个活动开始遍历这些任务,同时维护一个全局最大值,到每个活动结束的最大值。排序时间复杂度为O(nlogn),后面一段时间复...原创 2019-04-12 09:32:10 · 3408 阅读 · 2 评论