dp

树形DP——小红树

题目描述 小红拿到了一棵树,每个节点被染成了红色或者蓝色。 小红定义每条边的权值为:删除这条边时,形成的两个子树的同色连通块数量之差的绝对值。小红想知道,所有边的权值之和是多少? 输入描述 第一行输入一个正整数n,代表节点的数量。第二行输入一个长度为n且仅由'R'和'B'两种字符组成的字符串。第i个 ......
树形

Leetcode(剑指offer专项训练)——DP专项(6)

排序的数目 题目 给定一个由 不同 正整数组成的数组 nums ,和一个目标整数 target 。请从 nums 中找出并返回总和为 target 的元素组合的个数。数组中的数字可以在一次排列中出现任意次,但是顺序不同的序列被视作不同的组合。 题目数据保证答案符合 32 位整数范围。 链接 无效DF ......
专项 Leetcode offer

Leetcode(剑指offer专项训练)——DP专项(5)

最少的硬币数目 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 链接 完全背包问题 思路:主要是要自己推出动态转移方程 $$ F(i)=min_{ ......
专项 Leetcode offer

【DP】LeetCode 64. 最小路径和

题目链接 64. 最小路径和 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设到了右下角,考虑一下我们要存储的信息 走到最后坐标的最小步数 当前坐标的信息,用来判断是否走到了右下角 很容易联想到使用二维数组 dp[i][j ......
路径 LeetCode 64

【DP】LeetCode 70. 爬楼梯

题目链接 70. 爬楼梯 思路 分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律 表示状态 假设走到了最后一层台阶,考虑一下我们要存储的信息: 走到这最后一层台阶的方法数 当前台阶数,用于判断是否走到了最后一层台阶 这时候很容易想到使用一维数组 ......
楼梯 LeetCode 70

Leetcode(剑指offer专项训练)——DP专项(4)

加减的目标值 给定一个正整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" ......
专项 Leetcode offer

ACM NFLSOJ #834 - 【2021六校联考WC #2】三角形(找性质+数位 dp)

首先先手玩一下所有点的 $x$ 都相同的情况,你会发现存在解的必要条件是所有黑点的 $y$ 构成一段连续的区间,此时答案为 $(X+R-L,L)$,其中 $L,R$ 为所有点中纵坐标的最小和最大值。 受这个思想启发,我们考虑将所有点都变到同一 $x$ 坐标上,设 $X=\min{x_i}$。那么显然 ......
三角形 数位 性质 NFLSOJ 2021

简单理解 DP 套 DP

复制粘贴的: 通过一个外层的 DP 来计算使得另一个 DP 方程最终结果为特定值的输入数。 例如求有多少种输入使得一个背包 DP 恰好答案为 $K$。 外层 DP 的状态是所有子 DP 的状态的值。 子 DP 状态数很少,通常经过滚动数组优化,比如 $3n$ 变成 $2\times 3$) 通常我们 ......
DP

决策单调性优化 DP

虽然我之前说过「DP 优化的重点都在于设计 DP 而非优化 DP 」之类的话,不过这些优化方式的确值得一学。。 代码会单独放在另一篇文章里。 决策单调性优化 DP 这里面学问很深啊。优化方式也多种多样。 总的来说,对于一类形如 $f_i=\min f_j+w(j,i)$ 的转移方程,设 $p_i$ ......
DP

【做题笔记】树形 dp

1. luoguP2016 战略游戏 1.1 Solve 设计状态 $dp[i][0/1]$ 表示在 $i$ 子树内, 放/不放 第 $i$ 个节点使其合法所需的最少的士兵数目。则有: 不选 $i$ 节点,则 $i$ 的儿子必须选; 选 $i$ 节点,则 $i$ 的儿子可选可不选; 因此,转移方程为 ......
树形 笔记 dp

洛谷 P5642 - 人造情感(换根 dp)

想起来很轻松,写起来很酸爽的套路题。 默认以 $1$ 为根。先考虑怎么算单个 $f(u,v)$,我们定义一个连通块的权值为从该连通块中选出若干条点不相交的路径,选出的路径的权值之和的最大值。那么显然 $f(u,v)$ 就是整棵树的权值 $-$ 挖掉 $(u,v)$ 这条路径后各个连通块的权值之和。显 ......
情感 P5642 5642

【DP】LeetCode 62. 不同路径

题目链接 62. 不同路径 思路 代码 class Solution { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; Arrays.fill(dp[0], 1); for(int i = 0; i < m; i ......
路径 LeetCode 62

【SSL 2401】天地一抹红(斜率优化 DP)

有一个 n*m 的网格,要从 (1,1) 走到 (n,m)。 然后你可以花费当前格的代价从 (i,j) 走到 (i+1,j),或者走到 (i,k) 其中 k>j。 当你走到 (i,k) 的时候,你可以选择 (i,j)~(i,k-1) 中地方含有宝石价值的最大值,然后就会给你贡献这个最大值乘 (i,k... ......
斜率 天地 2401 SSL

数位DP (记忆化 暴力搜索!!)

用于: 统计数位于数位的相关信息的计数问题, 通常会问在某个区间内, 利用减法思维,这样就会减少一个边界的判断 此时就会只有一个边界, 这个边界 利用 lim 处理, 在暴力枚举的时候不要超过lim 就行了 记忆化搜索的过程, 就是一个完全的暴力, 不过有记忆化搜索, 所以他的时间复杂度是 DP的空 ......
数位 暴力 记忆

dos批处理中%~dp0%的说明

原文:(49条消息) dos批处理中%~dp0%的说明_批处理 %~dp0 后面的文本_Crett的博客-CSDN博客 %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录cd是转到这个目录,使用 /D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。 ......
dos dp0 dp

CF1295E Permutation Separation 题解 线段树优化dp

题目链接:https://codeforces.com/problemset/problem/1295/E 题目大意: 将排列 $p_1, p_2, \ldots, p_n$ 先分成 $p_1, \ldots, p_k$ 与 $p_{k+1}, \ldots, p_n$ 两个集合。 然后可以将元素从 ......
线段 题解 Permutation Separation 1295E

洛谷 P1922 女仆咖啡厅桌游吧(树形DP)

https://www.luogu.com.cn/problem/P1922 标注的是个树形dp,其实就是个简单的dfs+dp 输入 #1 5 1 2 2 3 3 4 2 5 输出 #1 2 读题时间>构思时间+码代码时间(菜鸡日常 #include<bits/stdc++.h> using nam ......
树形 女仆 咖啡厅 咖啡 P1922

【DP】LeetCode 剑指 Offer 60. n个骰子的点数

题目链接 剑指 Offer 60. n个骰子的点数 思路 动态规划问题中,只用考虑第 n 个阶段如何由第 n-1 个阶段转化过来 在本题中,就是投掷 n 个骰子的结果如何由 投掷 n-1 个骰子的结果转化过来。 代码 class Solution { public double[] dicesPro ......
骰子 点数 LeetCode Offer 60

【题解】[九省联考 2018] 一双木棋 chess(轮廓线 dp)

题目分析: 之前一直听说过轮廓线 $dp$,但是没有真正见过,这次真正见到了让我大为震撼。 轮廓线 $dp$ 顾名思义就是维护轮廓线,这类题目一般都是在网格图上。 而对于任意一条轮廓线也就是一条从左上到右下或者从左下到右上的线,而且一般这种轮廓线都满足一定的性质,也就是不可能存在向内凹陷的情况,即一 ......
题解 轮廓 chess 2018

【题解】CF1498F Christmas Game(换根 dp)

题目分析: 感觉这个题目难度适中,而且换根 $dp$ 的过程相当好写并且很 educational,所以就当作换根 $dp$ 的典例,来讲讲换根 $dp$ 到底是个啥吧。 换根 $dp$ 其实就是用来解决:树上询问以每个点为根的相关信息,以指定某个点为根的时候信息很好求解,在换根的时候只会影响极少点 ......
题解 Christmas 1498F 1498 Game

[睡前小dp] 序列相似性问题(一)LCS和LIS

1. LCS问题 LCS:最长公共子序列,表示序列 L 和 J 最长公共的子序列长度。 计算 LCS 的经典方法是时间复杂度为 O(n*m) 的 dp。不妨设 dp[i][j] 为 LCS(L[0~i], J[0~j]),这样能够得到递推公式: dp[i][j] = 0 (i=0 or j = 0) ......
相似性 序列 问题 LCS LIS

洛谷 P1806 跑步(DP)

https://www.luogu.com.cn/problem/P1806 题目描述 路人甲准备跑n圈来锻炼自己的身体,他准备分多次(>1)跑完,每次都跑正整数圈,然后休息下再继续跑。 为了有效地提高自己的体能,他决定每次跑的圈数都必须比上次跑的多。 可以假设他刚开始跑了 0 圈,那么请问他可以有 ......
P1806 1806

洛谷 P1754 球迷购票问题(DP/Catalan)

https://www.luogu.com.cn/problem/P1754 题目大意: 一共有2*n个人,n个人拿着50元的,n个人拿着100元的,但是卖票处一开始没有钱可以找。 问我们这些人怎样排列才可以完美的实现销售流程。 输入 #1 2 输出 #1 2 #include<bits/stdc+ ......
球迷 Catalan 问题 P1754 1754

洛谷 P2986 [USACO10MAR] Great Cow Gathering G(树形DP/换根DP)

https://www.luogu.com.cn/problem/P2986 输入 #1 5 1 1 0 0 2 1 3 1 2 3 2 3 4 3 4 5 3 输出 #1 15 推荐这位佬的思路以及题解 https://zhuanlan.zhihu.com/p/571948153 #include ......
树形 Gathering P2986 Great USACO

状压DP例题

## [P2831愤怒的小鸟](https://www.luogu.com.cn/problem/P2831)首先记录抛物线的方案。根据题意可知,两个点可能会确定一条符合题设的抛物线。所以$O(n^2)$枚举两个点,如果它们能够构成一个符合题设的抛物线,就再$O(n)$扫一遍,将这个抛物线能够到达的 ......
例题

线性,背包,区间DP例题

P1282多米诺骨牌 容易发现一个性质:对于前$i$个牌子,它们的点数总和加起来是一个定值。所以,设$f[i][j]$表示前$i$个多米诺骨牌的第一行的和为j时的最小旋转次数。 状态转移方程: $$ f[i][j]=min(f[i-1][j-a[i]],f[i-1][j-b[i]]+1)) $$ 初 ......
例题 区间 线性 背包

P5056 【模板】插头 dp

学了好久。。。 细节在代码中,建议看其他题解,然后就着我的代码理解qwq 点击查看代码 #include<bits/stdc++.h> #include<unordered_map> #define int long long #define inf 1e18 #define inc 0xcfcfc ......
插头 模板 P5056 5056 dp

洛谷 P1775 石子合并(弱化版)(区间DP)

###洛谷题面 https://www.luogu.com.cn/problem/P1775 ###AcWing题面 https://www.acwing.com/problem/content/description/284/ #include<bits/stdc++.h> using names ......
区间 石子 P1775 1775

CF1809G prediction - dp - 组合数学 -

题目链接:https://codeforces.com/contest/1809/problem/G 题解: 一道很强的 dp 首先翻译条件:predictable 是什么意思?发现就是对每一个下标,前缀 max 和下一个位置至少差一个 $k+1$ 看到 $n \leq 10^6$,可以猜测最后应该 ......
组合数学 prediction 数学 1809G 1809

算法--DP

矩阵相乘 凸多边形最优三角剖分 凸多边形是指多边形的任意两点的连线均落在多边形的内部或边界上。 ......
算法 DP