dp

树型dp基础题————没有上司的舞会

首先状态表示,对于每个节点来说,都有选择或者不选择两种状态,父亲节点的状态由子节点状态推算而来,比如我们选择了子节点,那么父亲节点肯定不能选择,如果我们不选择父亲节点,那么子节点可以选择也可以不选择。状态表示完成了,接下来就是状态转移。 我们假设dp[root][0]是未选择该节点产生的价值,dp[ ......
舞会 上司 基础

LeetCode 周赛上分之旅 #45 精妙的 O(lgn) 扫描算法与树上 DP 问题

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode ......
算法 LeetCode 之旅 问题 lgn

算法刷题:DP专题(9.16,持续更)

算法刷题系列上期: 递归、栈/队列、树、回溯、DP(8.29) 数组指针、前缀和/差分/树状数组、滑窗/单调队列/滚动哈希、二分(8.13) 链表题(8.29) 目录动态规划基础状态状态转移函数题目三角形最小路径和 动态规划基础 状态 状态转移函数 题目 三角形最小路径和 时间:3ms 击败 77% ......
算法 专题 9.16 16

洛谷P4316 绿豆蛙的归宿(期望dp)

原题链接:https://www.luogu.com.cn/problem/P4316 这题是经典的概率dp题,通常看到的题解都是逆推的做法,实际上理解了题目的含义后发现逆推其实是正推的一种特殊情况而已 正推做法: 定义dp[i]表示从1~i的路径长度的期望,那么dp[1] = 0,答案就是dp[n ......
绿豆 归宿 P4316 4316

摆渡车—线性dp

#include<bits/stdc++.h> using namespace std; int n,m,a[505],f[510][110],inf; int s[505],t[505]; int main() { std::ios::sync_with_stdio(false); cin>>n> ......
摆渡 线性

AtCoder Grand Contest 058 F Authentic Tree DP

洛谷传送门 AtCoder 传送门 人生中第一道 AtCoder 问号题。 设 \(P = 998244353\)。 注意到 \(f(T)\) 的定义式中,\(\frac{1}{n}\) 大概是启示我们转成概率去做。发现若把 \(\frac{1}{n}\) 换成 \(\frac{1}{n - 1}\ ......
Authentic AtCoder Contest Grand Tree

可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP

P8946 The Lost Symbol 这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空,这就可以用一个 deque 来维护,然后对于全局赋值/全局加,需要对每个位置维护一个时间戳,并记录上一次 ......
函数 费用 多项式 线段 对数

AGC058 F Authentic Tree DP

一道问号题,AT 赛场上没人通过。其实是联考题 这道题十分有意思,做法很简单但是要想到是极其困难的。考场上我也拿着推了很久猜测这个式子的组合意义,擦到了正解的一些边。然而正解的思想还是太反直觉了。 首先题目中的式子实际上是让我们对树上的边建一颗笛卡尔树,然后计算笛卡尔树所有子树大小 +1 的倒数乘积 ......
Authentic Tree AGC 058 DP

代码源:没有上司的舞会(树形DP)

一家公司里有 n 个员工,他们的编号分别是 1 到 n ,其中 1 号员工是公司 CEO,CEO 在公司里没有上司。除了 CEO 外,每个人都有一个直接上司。今天公司要办一个舞会,为了大家玩得尽兴,如果某个员工的直接上司来了,他/她就不想来了。i 号员工来参加舞会会为大家带来 ai 点快乐值。现在我 ......
树形 舞会 上司 代码

Codeforces 1868C/1869E Travel Plan 题解 | 巧妙思路与 dp

题目链接:Travel Plan 题目大意:\(n\) 个点的完全二叉树,每个点可以分配 \(1 \sim m\) 的点权,定义路径价值为路径中最大的点权,求所有路径的价值和。 对于任意长度(这里主要指包括几个节点)的路径 \(t\),最大点权不超过 \(k\) 的方案数有 \(k^t\) 个, 因 ......
题解 Codeforces 思路 Travel 1868

[DP记录] P1584 魔杖

(题目传送门) 什么奇奇怪怪的 \(\rm dp\) 如果要选择 \([i,j]\) 这一段,则它不能被其它的包含,也不能包含其它的。因此前面的选择起点得小于 \(i\),终点得小于 \(j\) 所以设 \(f_{i,j}\) 表示起点不超过 \(i\),终点不超过 \(j\) 的最大值,则有 \[ ......
魔杖 P1584 1584

树形 dp 专题

题单 小G有一个大树 #include <bits/stdc++.h> using namespace std; #define int long long int32_t main() { ios::sync_with_stdio(0), cin.tie(0); int n; while (cin ......
树形 专题 dp

【题解】DP选练(23.9.11 - 23.9.12)

一些写过题解的题我就直接挂连接了。 [NOIP2018 提高组] 货币系统 题目描述: 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为 \(n\)、面额数组为 \(a[1..n]\) 的 ......
题解 23 11 12

dp 选练(基础版)

P5664 题目描述: Emiya 是个擅长做菜的高中生,他共掌握 \(n\) 种烹饪方法,且会使用 \(m\) 种主要食材做菜。为了方便叙述,我们对烹饪方法从 \(1 \sim n\) 编号,对主要食材从 \(1 \sim m\) 编号。 Emiya 做的每道菜都将使用恰好一种烹饪方法与恰好一种主 ......
基础 dp

USB的DP(D-) DM(D+)的英文全称是什么?

DM:data minus 负, DP:data plus 正。 VCC是电源5V(红色线), DM是USB的数据线D-(白色线), DP是USB的数据线D-+(绿色线), GND是地(黑色线),; USB插头线一般的排列方式是VCC、 D- 、D+、GND。 Digital Positive & ......
全称 USB DP DM

CF *2600 DP选练

CF258D 题目描述: 有一个长度为 \(n\) 的排列,有 \(m\) 次操作,操作为交换两个数 \(a,b\) ,每次操作都有 \(50\%\) 的概率进行,求进行 \(m\) 次操作后期望逆序对个数 \(n,m\le1000\) 题目分析: 看到 \(n\) 和 \(m\) 都只有 \(10 ......
2600 CF

【LuoGu】3047 Nearby Cows G ——两次DFS+树上DP

[USACO12FEB] Nearby Cows G 题目描述 给你一棵 \(n\) 个点的树,点带权,对于每个节点求出距离它不超过 \(k\) 的所有节点权值和 \(m_i\)。 输入格式 第一行两个正整数 \(n,k\)。 接下来 \(n-1\) 行,每行两个正整数 \(u,v\),表示 \(u ......
Nearby LuoGu 3047 Cows DFS

线性DP

写代码三要素:边界、目标、转移 DP要求:无后效性 Mr. Young's Picture Permutations 要求从左到右和从上到下都递减 首先肯定按顺序加入 从左到右很明确,加到最右边 从上到下怎么维护? 其实就是这一行加完之后不超过上一行就行 发现行数很少,直接变成状态 \(dp[b_1 ......
线性

【LuoGu】2014 选课——树上DP

[CTSC1997] 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习。现在有 \(N\) 门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程 a 是课程 b 的先修课即只有学 ......
LuoGu 2014

Solution Set - DP

CF101E Candies and Stones Link&Submission. DP 的状态设计和转移都是显然的,唯一的问题在于需要输出方案,而这题卡空间。会发现如果用 bitset 存下所有位置的转移,空间刚好多了一点点。所以考虑分两次,第一次只存后 10000 行的转移,然后从最终状态倒退 ......
Solution Set DP

数位dp

字面意思。 # 恨妻不成7 [传送门](http://oi.nks.edu.cn/zh/Problem/Details?cid=2440&tid=D) 前面的限制按照题意模拟即可,然后考虑维护平方和的常用手段: 本来是 $\sum a^2$,变成了 $\sum (a+x)^2=\sum a^2+2a ......
数位

暑集 Day28 dp专题比赛题解

`2023-08-22 10:55:44` # 前言 注:这场比赛全是 dp 题,时长 3 小时。 第一眼看到 A 题这种奇葩题面直接跳了,感觉不是自己这种成分能写的,结果我旁边两个呆呆鸟 zyx,cf 居然觉得我直接上来把 A 秒了,然后他们死磕 A 题嗑了两个多小时???离谱。 最后我只 A 了 ......
题解 专题 Day 28

AT_dp_v Subtree 题解

`2023-07-24 20:16:31 AT_dp_v 题解` [AT_dp_v Subtree](https://www.luogu.com.cn/problem/AT_dp_v) # 思路 考虑树形 dp,假设根左右子树的连通块已经算出来了,我们用 $f[x]$ 表示强制将 $x$ 染色,$x ......
题解 AT_dp_v Subtree AT dp

AT_dp_s题解

这是一道比较板子的数位 dp 。 首先观察到 $k$ 很大,肯定不能用枚举的方法求,然后就考虑用数位 dp 。对于这道题来说,我们可以在用记忆化搜索做数位 dp 的时候存一个当前各数位之和对 $d$ 取余的余数,当把数填完之后判断余数是否为 $0$ 就能判断这个数是否符合条件。 ```cpp #in ......
题解 AT_dp_s AT dp

AT_dp_y Grid 2题解

双倍经验 [CF559C](https://www.luogu.com.cn/problem/CF559C) 前置知识:网格图内任意两点间的路径数量。这个我们可以通过组合数的方法计算出来。假设我们从点 $(1,1)$ 走到点 $(i,j)$,在这个过程中我们的移动步数是 $|i-1+j-1|=|i+ ......
题解 AT_dp_y Grid AT dp

Codeforces Round 798 (Div. 2) C (树形DP、思维、*1600)

[C. Infected Tree](https://codeforces.com/problemset/problem/1689/C "C. Infected Tree") > 题意:给定一棵树, 钦定 $ 1 $ 号点为根节点, 一开始根节点中毒了, 接下来的 $ n $ 个时刻, 每一时刻可以 ......
树形 Codeforces 思维 Round 1600

数位dp总结---LZM

# 数位DP总结 BY LZM > ### ~~当你学会了数位DP,那么你会发现,在考场上,你也写不出来。~~ 首先给出一道例题: >给出一个区间 $[l,r]$ ,求出区间内每个数字的数位和,答案 $\bmod \ 998244353$,$1\le l,r \le 10^{18}$。 ``` 样例 ......
数位 LZM

AtCoder Beginner Contest 318 - D(状压 dp)

[toc] # [D - General Weighted Max Matching](https://atcoder.jp/contests/abc318/tasks/abc318_d) **题意** 给定无向图,边有边权。让你选择一组边,满足任意两边不相交且总边权和最大。 顶点数 $\le 16 ......
Beginner AtCoder Contest 318 dp

关于一类 1D1D dp 问题的优化技巧

典型模型: $$dp_i=\min\limits_{i-k+1 \leq j \leq i} dp_{j-1}+max(a_j,a_{j+1},\dots,a_i)$$ 这类问题有简单的 $nlogn$ 做法,但是对于部分问题则要求我们使用线性做法。一个用烂的做法是用均摊的数据结构去维护上面的转移区 ......
技巧 问题 1D1D 1D D1

算法题目分享:小美的01串翻转 | dp

> 最近遇到一个算法题目,感觉挺有意思,分享一下。原题和参考题解放在最后的链接中了。 # 题目 题目描述 小美定义一个 01 串的权值为:每次操作选择一位取反,使得相邻字符都不相等的最小操作次数。 例如,"10001"的权值是 1,因为只需要修改一次:对第三个字符取反即可。 现在小美拿到了一个 01 ......
算法 题目 dp