zhengjun dp

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

dp杂题选做

树的数量 题目其实挺简单的,难点在于状态的设计(其实也没多难)。 令 $f_i$ 表示 $i$ 个点的 $m$ 叉树的数量,发现无法转移。设 $g_{i,j}$ 表示根节点所在子树内有 $i$ 个节点,$j$ 个儿子(儿子所在子树可以为空)。可以写出转移方程:$g_{i,j}=\sum\limits ......

洛谷 P8742 [蓝桥杯 2021 省 AB] 砝码称重(dp/背包)

https://www.luogu.com.cn/problem/P8742 输入 #1复制 3 1 4 6 输出 #1复制 10 #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<LL,L ......
蓝桥 砝码 背包 P8742 8742

【黄题 dp】P1026 [NOIP2001 提高组] 统计单词个数

https://www.luogu.com.cn/problem/P1026 这题的idea首先是直接暴力枚举k,发现会t,遂想到dp 用 $dp[i][k]$ 表示 前 $i$ 个数形成了 $k$ 段数字的最大答案 注意一个比较坑的点是可能同一个位置会有多个单词开始,但是只计数一个 eg: 1 2 ......
单词 个数 P1026 1026 NOIP

【题解】[SDOI/SXOI2022] 小 N 的独立集(dp of dp)

题目分析: 就借助这个题稍微说一下 $dp$ 套 $dp$。 对于 $dp$ 套 $dp$ 其解决的问题是:若给定某一具体情况则答案十分好求,现要求对于所有的情况的答案进行统计。 这类问题我们一般称解决这个具体情况的 $dp$ 为内层 $dp$,而对于所有情况进行统计的 $dp$ 为外层 $dp$。 ......
题解 SDOI 2022 SXOI of

Fragmentation merging-填坑dp

D. Fragmentation merging https://codeforces.com/gym/103104/problem/D 题意 给定一个长度为n($n<=5e3$)的排列 每次操作可以选择两个不相交的区间,如果两个区间并起来的新区间是连续的一段数($max - mi + 1 = le ......
Fragmentation merging