dp基本算法
_Shmily
这个作者很懒,什么都没留下…
展开
-
P1169 [ZJOI2007]棋盘制作 (悬线法)
题目链接题面:题解:了解悬线法的使用。代码://悬线法//好久之前就看到这个东西了,但是一直没写过题目//解决给定矩阵中满足条件的最大子矩阵//用一条线(横竖貌似都行)左右移动直到不满足约束条件或者到达边界//left[i][j]代表从(i,j)能到达的最左位置//right[i][j]代表从(i,j)能到达的最右位置//up[i][j]代表从(i,j)向上扩展最长长度.#include<iostream>#include<cstdio>#include原创 2020-08-25 08:07:53 · 82 阅读 · 0 评论 -
P3195 [HNOI2008]玩具装箱TOY /【模板】斜率优化
题目链接//本题数据有点弱,实际上中间是有可能爆掉 long long 的#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<string>#include<queue...原创 2020-08-24 21:31:48 · 78 阅读 · 0 评论 -
数位dp(2):
一、:统计 0–i 中各数位出现次数,最终答案为各数位出现次数乘以该数位权值的和。#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<cstring>#include<cstdlib>#define ll long long#define llu unsigned ll#define int llusing na原创 2020-08-24 22:12:56 · 87 阅读 · 0 评论 -
数位dp:
今天突然做到一个数位dp的题目,才发现一直没有数位dp的板子。在找数位dp的题目的时候,发现我的树形dp大概也需要整理一下了?一、不要62 HDU - 2089题意:某个区间中,数字中不含有4或者62数有多少个。题解:#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<map>原创 2020-08-24 22:01:42 · 179 阅读 · 0 评论 -
插头dp/轮廓线dp
先%mmh学长。这个东西还好吧。。。。也算是个状压,难的也不会,就会写个板子题。用哈希map代替了哈希表。一、P5056 【模板】插头dp:题目背景ural 1519陈丹琦《基于连通性状态压缩的动态规划问题》中的例题题目描述给出n*m的方格,有些格子不能铺线,其它格子必须铺,形成一个闭合回路。问有多少种铺法?输入格式第1行,n,m(2<=n,m<=12)从第2行...原创 2020-08-24 21:16:01 · 318 阅读 · 0 评论 -
动态dp
一、模板题:P4719 【模板】动态 DP:题目描述给定一棵n个点的树,点带点权。有m次操作,每次操作给定x,y,表示修改点x的权值为y。你需要在每次操作之后求出这棵树的最大权独立集的权值大小。输入格式第一行,n,m,分别代表点数和操作数。第二行,V1,V2,…,Vn,代表n个点的权值。接下来n−1行,x,y,描述这棵树的n−1条边。接下来m行,x,y,修改点x的权值为y。输出...原创 2020-08-24 21:15:12 · 139 阅读 · 0 评论 -
概率/期望dp:
一、Acwing 217. 绿豆蛙的归宿:给出一个有向无环的连通图,起点为1,终点为N,每条边都有一个长度。数据保证从起点出发能够到达图中所有的点,图中所有的点也都能够到达终点。绿豆蛙从起点出发,走向终点。到达每一个顶点时,如果有K条离开该点的道路,绿豆蛙可以选择任意一条道路离开该点,并且走向每条路的概率为 1/K 。现在绿豆蛙想知道,从起点走到终点所经过的路径总长度的期望是多少?输入...原创 2020-08-24 20:51:43 · 129 阅读 · 0 评论 -
斜率优化dp:
一、任务安排1:有 N 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这 N 个任务分成若干批,每一批包含连续的若干个任务。从时刻0开始,任务被分批加工,执行第 i 个任务所需的时间是 Ti。另外,在每批任务开始前,机器需要 S 的启动时间,故执行一批任务所需的时间是启动时间 S 加上每个任务所需时间之和。一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕...原创 2020-08-24 20:51:16 · 204 阅读 · 0 评论 -
单调队列优化dp:
用数组模拟队列速度会更快一点。一、Fence POJ - 1821:A team of k (1 <= K <= 100) workers should paint a fence which contains N (1 <= N <= 16 000) planks numbered from 1 to N from left to right. Each worker...原创 2020-08-24 20:51:07 · 315 阅读 · 0 评论 -
倍增优化dp:
写在前面:用倍增优化的动态规划算法求解问题时,一般分为两部分,第一部分是预处理,用阶段成倍增长的DP,计算出若干与2的整数次幂相关的代表状态。第二部分是拼凑,基于二进制拆分思想,用上一部分得到的代表状态组合成最终答案。一、P1081 开车旅行:题目描述小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1到 N 编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互...原创 2020-08-24 20:50:58 · 486 阅读 · 0 评论 -
计数类dp:
写在前面:这一类dp特别要求不重不漏。统计对象的可能情况一般比较多,通常需要精确的划分和整体性计算。因此,使用动态规划抽象出问题中的子结构和推导的阶段,将有助于我们准确而高效的进行求解。在求解计数类动态规划的问题时,通常要找到一个基准点,围绕这个基准点构造一个不可划分的整体,以避免子问题之间的重复。一、Gerald and Giant Chess CodeForces - 559C:Gia...原创 2020-08-24 20:50:50 · 530 阅读 · 0 评论 -
数据结构优化dp:
写在前面:一般的,只要决策的候选集合只扩大,不缩小,我们就可以仅用一个变量维护最值,不断与新加入候选集合的元素比较,即可直接得到最优决策,O(1)的进行转移。在更加复杂的情况下,我们就要用更加高级的数据结构,而不仅仅是一个变量维护dp的决策候选集合,以便快速执行插入元素,删除元素,查询最值等操作,把朴素的在取值范围中枚举的时间优化为维护数据结构的时间。一、Cleaning Shifts PO...原创 2020-08-24 20:50:39 · 366 阅读 · 0 评论 -
有后效性的状态转移方程:
一、实际上无后效性是动态规划算法的前提之一,然后有些题,我们设计出状态表示和状态转移方程之后才发现,其似乎不满足无后效性这一特点。以 以下 期望dp为例,在很多的题目中,动态规划的状态转移分阶段带环,我们需要把dp和高斯消元相结合,在整体层面采用动态规划框架,在局部使用高斯消元解出互相影响的状态。事实上,多数的期望dp都会采用倒推的方式执行。Broken robot CodeForc...原创 2020-08-24 20:50:30 · 334 阅读 · 0 评论 -
环形结构上的动态规划问题的两种基本处理方式:
一、执行两次DP,第一次在任意位置把环断开成链,按照线性问题求解。第二次通过适当的条件和赋值,保证计算的状态等价于把断开的位置强制相连。Naptime POJ - 2228:Goneril is a very sleep-deprived cow. Her day is partitioned into N (3 <= N <= 3,830) equal time period...原创 2020-08-24 20:50:20 · 521 阅读 · 0 评论