dp

【DP】P8816 [CSP-J 2022] 上升点列 题解

P8816 提供一种不一样的做法。 首先将每个点以横坐标为第一关键字,纵坐标为第二关键字排序。 一维的 dp 肯定不够,因为 dp 既要存最多点数,又要保存自由点的点数。 赛时没看 \(k\) 的范围,于是开了一个结构体。 \(dp_i.w\) 表示从当前起点开始且于 \(i\) 点结束的最多的点数 ......
题解 P8816 CSP-J 8816 2022

代码源:互不侵犯(SCOI,状压DP)

点击查看代码 #include<bits/stdc++.h> using namespace std; int n,m; long long f[10][1024][100]; int v[1024]; void init() { for(int i=1;i<1<<n;++i) { int c=0; ......
代码 SCOI

AC自动机与dp详解

AC自动机与dp 前言: 本篇题解隶属于https://www.cnblogs.com/linghusama/p/17742870.html部分 首先一定要理解fail跳的原理,不然很难理解第二维为什么要设置。 首先给出大致的雏形,dp_i_j表示目前拼凑出长度为i的字符串,且ac自动机上的指针在j ......
自动机

一些转移细节还不太清楚的线性dp

D. Round Subset 老早写过了,但是边界考虑不太清楚 https://codeforces.com/problemset/problem/837/D #include <bits/stdc++.h> #define ll long long using namespace std; co ......
线性 细节

背包DP

题目背景:你有一个容量为 M的背包,有N个物品,每个物品的重量和价值分别为w[i]和c[i],现在选一些物品放入这个背包使装入的价值最大 1. 01背包(每件物品只有1件):倒序枚举重量,O(N^2) E(i,n){ cin>>w>>c; for(int j=m;j>=w;--j) f[j]=max ......
背包

算法之动态规划(DP)求解完全背包问题(状态转移式方程推导)

完全背包是01背包的进阶版。在这里补充一下代码随想录的完全背包状态转移式的推导。有兴趣的可以先看一看原版。 状态转移方程 状态:dp[i][j] 选择前i个物品,容量为j的背包时 所选物品价值总和最大。 状态转移: dp[i][j]=max(dp[i-1][j-k* v[i]]+k* w[i]) ( ......
方程 算法 背包 状态 动态

DP提高专项3

本场比赛难度吧不大,建议开题顺序为 \(T2-T1-T3\) 。 \(T2\) 题目描述 有 \(n\) 个高楼排成一行,每个楼有一个高度 \(h_i\)。称可以从楼 \(i\) 跳到 楼 \(j\),当 \(i\), \(j\) ( \(i < j\) )满足以下三个条件之一: \(i+1=j\) ......
专项

【思维】【DP】ABC298Ex Sum of Min of Length 题解

ABC298Ex 简单题。 因为有 \(\min\) 不好做,容易想到讨论 \(d(i, L)\) 和 \(d(i, R)\) 的大小。 令 \(p = \text{LCA}(L, R)\),\(dep_L > dep_R, dist = dep_L + dep_R - 2\times dep_p\ ......
题解 思维 Length of ABC

【DP】ABC273F Hammer 2 题解

ABC273F 一道比较板的区间 \(\text{dp}\)。 先对坐标离散化,令离散化数组为 \(v\)。 令 \(f_{i,j}\) 表示能走到区间 \([v_i,v_j]\) 的最短路程,显然 \(f\) 数组初始为 \(inf\)。 但发现这样无法转移,可以再增加一维 \(k \in \{0 ......
题解 Hammer 273F ABC 273

动态规划--DP

动态规划 动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 背包 01背包 每个物体只有两种可能的状态(取与不取),对应二进制中的 \(0\) 和 \(1\),这类问题便被称为「0-1 背包问题」。 状态转移方程: \[f_{i,j}=\max(f_{i-1,j},f_{i ......
动态 DP

【整除分块】【DP】ABC239Ex Dice Product 2 题解

ABC239H 简单题。 令 \(f_i\) 表示乘到 \(\ge i\) 的期望。 容易得到 \(f_i=\dfrac{\sum\limits_{j=1}^{n}f_{\lceil\frac{i}{j}\rceil}}{n}\)。 将 \(f_i\) 移到同一边,去掉系数,有 \(f_i=\dfr ......
题解 Product Dice ABC 239

【竞赛图】【DP】ARC163D Sum of SCC 题解

ARC163D 发现这个竞赛图一定能被分为两个集合 \(A\),\(B\)。满足 \(\forall u\in A,v\in B\),均有 \(u\to v\in E\)。答案就是划分这两个集合的方案数。 证明: 首先,竞赛图缩完点后一定是一条链,对强连通分量进行标号,满足编号小的强连通分量指向编号 ......
题解 163D ARC 163 Sum

关于一类期望 dp 的公式推导

想写但想不起来写啥🤣 orz 宝爷 orz 📕 \(\tt Beautiful\ Mirrors[5.0|B^x]\) 以下默认 \(p_i \leftarrow \dfrac{p_i}{100}\) 显然有转移方程 \[\Large f_i=p_i\times f_{i+1}+(1-p_i)\ ......
公式 dp

子树合并背包类型的 dp 的复杂度证明

首先,我们发现,转移一颗子树的背包,实际上就是把该子树的根节点的所有儿子的子树背包合并,再与根节点合并。具体的,合并两颗子树的转移方程式如下: \[f(u,i) = \max\limits_{j+k=i}\{f(v_1,j)+f(v_2,k)\} \]于是有如下伪代码: dfs(u) : su = ......
复杂度 背包 类型 dp

Letter Picking (CF D) (区间DP, 暴力)(0,1,2 Alice 平 bob ,尽可能小,尽可能大)

思路 : 区间dp(区间DP的时间复杂度 不一定是 n^3 ,可能是 n^2 更具题意) 直接题 直接 区间dp, 0 Alice 赢 1 平局 2 Bob 赢 (于是 alice 尽可能小, bob 尽可能大) alice 选 l , bob 可以选 l+1, 或者 r alice 选 r , b ......
尽可能 区间 暴力 Picking Letter

DP提高专项1题解

主要讲一下每一题的做法以及思考方式。 感觉难度薇 \(T1-T3-T2\) 。但是都不算难。 \(T1\) 题目描述 Jimmy 最近迷上了一款叫做方块消除的游戏。游戏规则如下:\(n\) 个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域)。为简化 ......
题解 专项

DP背包-完全背包

背包问题-完全背包 例题 题目描述 此题和原题的不同点: \(1\). 每种草药可以无限制地疯狂采摘。 \(2\). 药的种类眼花缭乱,采药时间好长好长啊!师傅等得菊花都谢了! 输入格式 输入第一行有两个整数,分别代表总共能够用来采药的时间 \(t\) 和代表山洞里的草药的数目 \(m\)。 第 \ ......
背包

DP背包-01背包

背包问题-01背包 首先我们要明白什么是01背包,在下述例题中,由于每个物体只有两种可能的状态(取与不取),对应二进制中的 \(0\) 和 \(1\),这类问题便被称为\(\text{「0-1 背包问题」}\)。 题目描述 有 \(N\) 件物品和一个容量为 \(M\) 的背包。第 \(i\) 件物 ......
背包 01

【做题笔记】dp,但是国庆限定版

Day 1 方块消除 传送门 看到这个数据范围就可以猜测正解是 \(O(n^4)\) 的 dp,与这个差不多相符合的可以想到区间 dp。然后大胆猜测一下就是区间 dp,令 \(dp[i][j]\) 表示消除掉 \([i,j]\) 后的最大价值,这个显然可以从长度更短的区间转移过来。所以此题我们可以从 ......
国庆 笔记

10.4 国庆 环形dp与基环树笔记

1.知识点 环形dp 环形 dp 的概念 • 环形dp与基环树在许多环形结构的问题中,我们可以在环中从某个位置把环断开,把这个环变成线性的,然后进行 \(dp\) 等操作。 • 把能通过上述操作解决的环形问题称作 "可拆解的环形问题" 。 环形 dp 的两种策略 • 第一次在任意位置把环断开成链,按 ......
环形 国庆 笔记 10.4 10

DP 总结

最小包含串 模型描述 给定两个长度分别为 \(n,m\) 字符串 \(s,t\),求出长度最小的串,使两个串都是这个串的子序列。 基本解法 设 \(f_{i,j}\) 表示第一个字符串前 \(i\) 个和第二个字符串前 \(j\) 个字符的最短包含串长度。 边界:\(f_{i,0}=f_{0,i}= ......
DP

状态机DP,力扣188. 买卖股票的最佳时机 IV

状态机DP,力扣188. 买卖股票的最佳时机 IV 整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。一次只能参与一笔交易,最多可以进行 k 笔交易,求最大利润。 确定状态f[n+1][k+2][2],f[i][j][0]、f[i][j][1]分 ......
时机 状态 股票 188 IV

重学OI#4 简单dp

观前须知:本文顺序较为混乱,根据本人复习顺序写的,难度严格不递增 dp不像数据结构可以套路性的将,以例题为主吧 part 1:树形dp 树是一种非常好的结构,其天然的递归形态保证了最优子结构,使得dp有很好的发挥空间 一般状态与子树和路径有关,也有时扯到叶子节点,所以不套路化,特殊情况可能会一大把 ......
OI

csps区间dp

加分二叉树 我们可以枚举中间这个 k 的位置,然后分别递归计算左右子树,这就让我们想到这是一个和区间有关的,我们可以用区间dp来解决。 \(f[i][j]\) 表示 i, j 这个区间的最大分值。用一个很板子的区间dp就可以解决了。 至于求前序遍历,我们也只需要通过递归然后枚举中间的根,第一个满足最 ......
区间 csps

csps 线性dp

合唱队形 正反分别求一遍最长上升子序列,然后枚举中间的最高点,计算出来队列里面的最多人,然后就可以知道需要出列的最少人。 过河 tips:两个互质的数字 p,q,他们所不能拼出来的最小的数字是 \((p-1)(q-1) - 1\)。 我们可以用 \(f[i]\) 表示经过长度 i 之间,我们所踩石头 ......
线性 csps

斜率优化dp

斜率优化dp 【模板】任务安排 机器上有 n 个需要处理的任务,它们构成了一个序列。这些任务被标号为 1 到 n,因此序列的排列为 1 , 2 , 3 .... n。这 n 个任务被分成若干批,每批包含相邻的若干任务。从时刻 0 开始,这些任务被分批加工,第 i 个任务单独完成所需的时间是 T_i。 ......
斜率

【题解】CF1110D Jongmah(DP)

【题解】CF1110D Jongmah 代码很短,但是思路我怎么也想不到的神仙 DP。 题意概述 你在玩一个叫做 Jongmah 的游戏,你手上有 \(n\) 个麻将,每个麻将上有一个在 \(1\) 到 \(m\) 范围内的整数 \(a_i\)。 为了赢得游戏,你需要将这些麻将排列成一些三元组,每个 ......
题解 Jongmah 1110D 1110 CF

数位dp学习笔记

数位dp学习笔记 目录数位dp学习笔记数位dp定义:题型特征:dp设计:dp转移例题:BZOJ 3679 数位dp 定义: ...好像就是对数位进行dp,统计方案数。 题型特征: 通常会有10组左右的询问,每一次询问你较大(1e18左右)的区间内满足某个条件的数的数量。 dp设计: dp一般会有2到 ......
数位 笔记

[LeetCode] 2334. Subarray With Elements Greater Than Varying Threshold_Hard tag: dp, stack

You are given an integer array nums and an integer threshold. Find any subarray of nums of length k such that every element in the subarray is greater ......

2023 ICPC 网络赛2 L Super-palindrome 字符串 border KMP dp

传送门 给出一个\(5000\)长的字符串 判断有多少个连续子串是超级回文的。 这里超级回文的定义是将字符串分成\(2k\)段每段按照回文对应相等。 设\(f_{l,r}\)表示区间\(l,r\)是否是符合要求的。引入\(border\)的定义:最长的前缀和后缀匹配长度。 容易想到我们如果暴力枚举每 ......