![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DP
文章平均质量分 75
动态规划
Clarence Liu
这个作者很懒,什么都没留下…
展开
-
经典的序列dp问题
序列dp原创 2022-09-12 13:55:32 · 156 阅读 · 0 评论 -
Codeforces Round #814 (Div. 2) D Burenka and Traditions dp
Codeforces Round #814 (Div. 2)原创 2022-08-17 02:31:30 · 236 阅读 · 0 评论 -
DP练习 洛谷 P1220 关路灯
https://www.luogu.com.cn/problem/P1220 给你nnn个路灯的位置和它们每秒消耗的功率,老张从某个路灯的位置出发,每次向左或者向右走,经过路灯就会关掉路灯,问路灯消耗功率的最小总量 注意并记住此题的方程设法,nnn的范围很小,考虑n2n^2n2的dpdpdp,我们设dp[i][j][0]dp[i][j][0]dp[i][j][0]表示关掉[i,j][i,j][i,j]之间所有路灯且最终停留在iii处的路灯消耗最小功率;dp[i][j][1]dp[i][j][1]dp[i]原创 2022-02-26 00:28:18 · 320 阅读 · 0 评论 -
2021CCPC女生专场 C. 连锁商店 状压DP
你现在在1号位置,给出若干单向路径,给出nnn个节点的所属公司,每个公司只能领取一次红包,问1号节点到每个节点所能领取到的累积最大金额,节点之间是独立的 这是一道比较好的状压DPDPDP练习题,有一个思维点就是n≤36n\leq36n≤36,如果直接进行状压肯定不行,但是因为如果公司只出现了一次,那么直接选择就好了;如果公司出现次数多于1次,那么这一类公司的数量不会超过18,所以我们可以对这第二类公司进行状压 我们设dp[s][i]dp[s][i]dp[s][i]表示当前已经选择(当前还没选)的第二类公司原创 2021-11-18 14:58:17 · 527 阅读 · 0 评论 -
最大子段和部分相关问题整理和总结
先来一道朴素最大子段和 https://www.luogu.com.cn/problem/P1115 很简单就是给你一个序列,在这里面找到连续且非空的一段,让这一段和最大 设dp[i]dp[i]dp[i]表示包含第iii个数的最大子段和,考虑如何转移,很简单,因为如果dp[i−1]<0dp[i-1]<0dp[i−1]<0,那么如果第iii个数归类到前面,总不如自成一派;反之就归类到前面,这样可以使前面一派更大 #include <bits/stdc++.h> using原创 2021-11-09 18:30:35 · 648 阅读 · 0 评论 -
2019江西省赛 A题 hdu6567 树的重心
http://acm.hdu.edu.cn/showproblem.php?pid=6567 以一棵树的任意一个节点作为根,则可以形成一棵有根树,如果以此根为界的若干棵子树中,最大子树具有的节点数最小,那么这个节点就是树的重心 树的重心相当于树的平衡点,一棵树最少有一个重心,最多有两个重心,如果有两个重心,那它们肯定直接相连,这是显然的,能够简单证明 这道题的意思是给你一个nnn,表示总共有多少个节点,然后给出n−2n-2n−2条边,表示两棵树内部的父子关系,这两棵树不相连,现在让你加一条线,把这两棵树原创 2021-11-07 15:02:53 · 153 阅读 · 0 评论 -
[NOIP2017 提高组] 宝藏 状压DP
https://www.luogu.com.cn/problem/P3959 分别枚举每一个起点,因为后来的选择不会影响到前面的选择,满足无后效性,同时局部最优可以扩展到全局最优,满足最优子结构性质,可以使用DPDPDP,使用常规状态压缩办法,枚举接下来的每一个可能的位置,然后记录状态进行dfsdfsdfs,同时需要记录当前经过的宝藏屋的数量,如果需要更新,则更新,同时继续搜索,最后取所有解的最小值 这里图比较小,要用邻接矩阵,不要用链式前向星,边太多了,会超时 #include <iostrea原创 2021-08-21 10:58:12 · 144 阅读 · 0 评论 -
树上DP之二次扫描与换根方法
我们需要通过一道题目引出这个话题 洛谷P3478 题意:给出一棵有nnn个节点的树,给我们n−1n-1n−1条边,并给定边权,现在问以谁为根节点能够使其他节点的深度之和最大,深度意思就是该节点到根节点的简单路径的边的数量,就是最短路径 如果想暴力求取,那么显然应该以每一个节点都作为根节点,分别计算其他节点的深度之和,再比较,找到最大的那一个,这样的话一圈forforfor循环加上dfsdfsdfs,时间复杂度显然应该是O(n2)O(n^2)O(n2),而题目中节点数量达到了10610^6106,这种方法显.原创 2021-07-05 23:56:44 · 301 阅读 · 0 评论 -
poj2411 Mondriaan‘s Dream状压DP
题目大意 给定高度和宽度的一个棋盘,现在要用高度为1,宽度为2的长方形覆盖这个棋盘,问方案数有多少 问题分析 初学状压DP,现在已经知道这道题是状压DP的问题了,关键在于如何状压呢?考虑到状压DP原理就是将状态压缩成二进制数,那么这个高度为1,宽度为2的长方形只有两种摆放方式,一种是横着放,另一种是竖着放,这样,可以规定,横着放的长方形两个格子里面都写1,竖着放的两个格子上面写0,下面写1,那么也就实现了状态压缩 因为一个格子只有两种状态,一种是0,另一种是1,所以如果说一行有mmm个格子,那么这一行的二原创 2021-03-30 20:02:40 · 130 阅读 · 0 评论 -
四边形优化原理
四边形不等式引入内容不等式介绍优化DP原理证明时间复杂度分析总结参考文献 引入 四边形不等式应用于DP优化,相信大家大多是接触区间DP问题才看到了这个知识点,关于它的起源,网上绝大多数文章都没有提到,这个问题最初来源于高德纳(Knuth)教授1971年研究最优二叉搜索树问题的一篇论文,后来储枫教授深入研究了这个东西,并在1980年提出并证明了它,四边形不等式可以将区间DP从O(n3)的时间复杂度优化到O(n2) 内容 不等式介绍 首先什么是四边形不等式呢?设w是整数定义下的一个二元函数,形式如下 设a原创 2021-03-28 18:46:11 · 624 阅读 · 0 评论 -
基础dp学习
基础动态规划引入硬币找零问题01背包问题 引入 有这样一个问题:楼梯有N阶,可以一步上1阶,也可以上2阶,问N阶楼梯有多少种走法 题目链接 洛谷P1225 如果用搜索的方法,每次有两种方法,那么增长速度是指数级的,时间复杂度很大 那么可以这样考虑,如何才能走到第N阶楼梯呢?,只能从第N-1阶上1阶或者从第N-2阶上2阶得到,也就是说dp[N]=dp[N-1]+dp[N-2],这其实是一种动态规划(Dynamic Programming,DP)的思想,把一个大问题分解成许多小问题,通过求解小问题得到大问题的原创 2021-01-25 00:00:47 · 338 阅读 · 0 评论