动态规划
文章平均质量分 85
性质的观察与子问题的合并
_ducati
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
「BalticOI 2022 Day1」Uplifting Excursion 物品 题解
感谢 此神仙 在这题上对我的帮助,这里表达对祂衷心的膜拜。传送门妙妙题。注意到所有物品的重量总和不超过 101000010100001010000,于是就是个裸的多重背包。使用单调队列优化的复杂度为 O(N4)O(N^4)O(N4),常数较大;使用二进制分组优化的复杂度为 O(N4logN)O(N^4 \log N)O(N4logN),常数较小且好写。具体两个能拿多少分没试过。首先思考一个简化版的问题:总重量不需恰好为 mmm,只需不超过 mmm。不难发现,此时我们可以直接贪心。具体来说,我们预先选上所有原创 2022-06-07 18:47:59 · 673 阅读 · 1 评论 -
[AGC002F] Leftmost Ball 题解
非常妙的计数 dp 题,有利于我们训练思维。Description传送门Solution首先,本题显然是一道计数 dp\text{dp}dp 题。在构造 dp\text{dp}dp 之前,我们不妨先考虑什么样的盘面 aaa 是合法的。不难得到下面的判定算法:考虑从左到右扫描 aaa,维护前缀中 000 的数量及非 000 颜色的种数,那么 aaa 合法当且仅当前者始终不小于后者。考虑将上述判定流程内化到 dp\text{dp}dp 状态中。令 fi,jf_{i,j}fi,j 表示,目前钦定了前原创 2022-05-07 20:30:51 · 295 阅读 · 0 评论 -
[AGC002E] Candy Piles 题解
Description传送门Solution首先抽象问题,将原问题转化到一个平面上进行。考虑将 aaa 从大到小排序,并建出 nnn 个长方形,其中相邻两个长方形紧挨,从左到右第 iii 个长方形的宽度为 111,长度为 aia_iai。那么,博弈模型等价于从 (1,1)(1,1)(1,1) 出发,每次向右或者向左走,最终走出边界的人输。首先不难想到一个 dp\text{dp}dp。令 fi,jf_{i,j}fi,j 表示,当目前在 (i,j)(i,j)(i,j) 时(即在第 iii 个长方形原创 2022-05-07 18:22:45 · 305 阅读 · 0 评论 -
【省选联考 2022 D1T2】填树 题解
Description传送门Solution为方便叙述,令 M=maxi=1n{ri}M=\max_{i=1}^n \{r_i\}M=maxi=1n{ri},p(u,v,l,r)p(u,v,l,r)p(u,v,l,r) 表示有多少种给 (u,v)(u,v)(u,v) 路径上的点钦定点权的方案数,满足各个 uuu 的点权 均在 [lu,ru][l_u,r_u][lu,ru] 范围内且最大值不超过 rrr,最小值不小于 lll。令 q(u,v,l,r)q(u,v,l,r)q(u,v,l,r) 表原创 2022-04-21 09:31:57 · 480 阅读 · 0 评论 -
Educational Codeforces Round 119 (Rated for Div. 2) EFG 题解
CF1620 题解原创 2021-12-19 18:18:10 · 649 阅读 · 0 评论 -
[八省联考 2018] 林克卡特树 题解
这道题我前前后后做了一年,共过了 444 遍,每次都有的新的理解;这次我认为自己理解透了,于是就写了一篇题解。这道题是我入坑看到的第一道黑题(当时很萌,不知道黑题是什么,看到这题感觉很好玩),另外还有就是《切树游戏》和 Spiders Evil Plan,记载着我的回忆(Description传送门Solution算法一为方便叙述,令树根为 111,wu,vw_{u,v}wu,v 表示 u,vu,vu,v 之间的边权,son{u}\text{son}\{u\}son{u} 表示 uuu 的儿子原创 2021-12-18 18:06:44 · 616 阅读 · 0 评论 -
CF1609 部分题解
赛时做出了 ABCDE,没有做出 FGH;目前已补掉了 F,尚未补掉 G,H。A令 bib_ibi 为 aia_iai 所含质因子 222 的个数,ci=ai2bic_i=\frac {a_i} {2^{b_i}}ci=2biai。不难发现,调整过程等价于将一共的 S=∑i=1nbiS=\sum_{i=1}^n b_iS=∑i=1nbi 个质因子 222 重新分配给所有的 ccc,使得所有值之和最大。根据贪心策略,将 SSS 全部分配给最大的 ccc 即可。B不难发现,最少删除次数原创 2021-12-05 15:51:07 · 566 阅读 · 0 评论 -
「Wdoi-4」Luogu P7872 题解
Description传送门Solution为方便叙述,令扫地的古明地觉为 A,走路的古明地恋为 B。首先,考虑当 A 和 B 的路线都固定时,如何找出最优解。分成两类讨论:A 的终点与 B 的终点相同(即 xs=xk,ys=ykx_s=x_k,y_s=y_kxs=xk,ys=yk)。此时两路线的最长公共后缀为一段非空的区间,在图中用黑色表示;剩余部分中,由 A 走的部分为绿色,由 B 走的部分为红色。不难发现,所有仅被绿色经过的点 (i,j)(i,j)(i,j) 的贡献均为 ai,j原创 2021-11-29 22:42:01 · 337 阅读 · 0 评论 -
浅谈二分栈优化决策单调性 DP 的写法及细节
宏观使用双端队列维护三元组 (l,r,x)(l,r,x)(l,r,x),表示 [l,r][l,r][l,r] 的决策点为 xxx。中观当扫描到第 iii 个位置的时候:①进行转移②在队首处弹出过老的三元组③在队尾处弹出 xxx 已没有 iii 优的三元组④考虑队尾的三元组,通过二分确定 ⌈\lceil⌈ xxx 更优 ⌋\rfloor⌋ 和 ⌈\lceil⌈ iii 更优 ⌋\rfloor⌋ 的分界点,并将最后一个三元组分裂为两个⑤在队尾处插入以 iii 为决策点的三元组 (_,n,i)(原创 2021-11-14 15:35:18 · 1009 阅读 · 0 评论 -
关于换根 dp 的随笔
换根 dp\text{dp}dp 通常有两种思考方法:①考虑根从 xxx 变为 yyy 时,将 yyy 对 xxx 的贡献去除,再将 xxx 贡献到 yyy 处,最后再撤销操作;②考虑对每个点 xxx,处理出其外子树的 dp\text{dp}dp 数组;这可以通过额外一次从父亲向儿子的 dp\text{dp}dp 求出这个数组。①对于绝大多数题目来说,思考起来较为简便;②处理起来可能较为复杂,不够直观,但是是通法。...原创 2021-11-11 22:04:31 · 164 阅读 · 0 评论 -
Codeforces Round #752 (Div. 1) 部分题解
前言A令 bib_ibi 表示,有多少个 j(j≤i)j(j \le i)j(j≤i) 不后于 iii 被删除。那么答案为 NO 当且仅当: 对于每个合法的 bbb,均存在一个 i∈[1,n]i \in [1,n]i∈[1,n] 使得 (bi+1)∣ai(b_i+1)|a_i(bi+1)∣ai。不难发现 bbb 与 n!n!n! 种删数方案构成了双射关系,因此整数序列 bbb 合法当且仅当 ∀i∈[1,n]\forall i \in [1,n]∀i∈[1,n] 满足 1≤bi≤i1 \le原创 2021-10-31 14:36:32 · 499 阅读 · 0 评论 -
CF1349F1 Slime and Sequences (Easy Version) 题解
Description传送门SolutionPart 1: 性质观察遇到这种输入量非常小的题,我们往往会想到找规律。先用暴力打个表出来试试吧1: 12: 3 13: 10 7 14: 41 39 15 1 我们发现,输入 nnn 后对应的答案之和为 n!nn!nn!n;因此,好序列的数量恰有 n!n!n! 种。这启发我们将好序列与长度为 nnn 的排列建立双射关系。考虑构造下面的双射:对于一个好序列 aaa 而言,将 aaa 中的元素从大到小排序;特别的,若两个元素的值相等,那么按原创 2021-10-23 09:12:15 · 278 阅读 · 0 评论 -
P7889 「MCOI-06」Eert Tuc Knil 题解
Description传送门Solution算法一对于每次询问跑一遍 dp\text{dp}dp 计算答案即可。期望得分 555 分。void dfs(int now,int fath){ for (int i=head[now];i;i=e[i].nxt){ int y=e[i].to; if (y==fath) dfs(y,now); dp[now]+=max(dp[y],0); } dp[now]+=a[now];}算法二为方便叙述,令所有节点的点权增量为 △\t原创 2021-10-23 09:06:13 · 256 阅读 · 0 评论 -
P3264 题解
DescriptionLOJ 传送门Solution算法一首先考虑只有一种频道的情况。注意到最终形成的是一棵树,并且 kkk 较小,这些启发我们做状压 dp\text{dp}dp。令 fi,sf_{i,s}fi,s 表示,目前树的根为 iii,且树内包含了情报站集合 sss。转移的时候,我们需要分类讨论 iii 的儿子数为 111 以及不小于 222 的情况。对于前者,转移形如 fi,s→fj,sf_{i,s} \to f_{j,s}fi,s→fj,s;对于后者,转移形如 fi,t+fi原创 2021-08-26 12:08:31 · 176 阅读 · 0 评论 -
ABC215H 题解
枯了,想出来第一问不会第二问了 /kkDescriptionTakahashi 有 nnn 片两两不同的卷心菜,且它们正在被 mmm 个公司求购。第 iii 种类别的卷心菜有 AiA_iAi 片,第 jjj 个公司需要恰好 BjB_jBj 片卷心菜且这些卷心菜的类别必须是第 jjj 个公司需要的。如果 Takahashi 成功地达成了所有 mmm 的公司的需求,那么他就会被称作卷心菜大师。然而,Snuke 并不想让 Takahashi 美梦成真,所以他会吃掉几片卷心菜使 Takahashi 无论如原创 2021-08-22 10:36:22 · 238 阅读 · 0 评论 -
CF1553(Div.1+Div.2) I 题解
Description给定一个长度为 nnn 的排列 ppp。令其中第 iii 个位置的权值为最长的包含 iii 的单调区间。例如,p=[4,1,2,3,7,6,5]p=[4,1,2,3,7,6,5]p=[4,1,2,3,7,6,5] 中,第 666 个位置的权值为 [5,7][5,7][5,7] 的长度,第 222 个位置的权值为 [2,4][2,4][2,4] 的长度。将这些权值依次拼在一起,就得到了 ppp 的阶梯序列。给定 aaa,你需要求出存在多少个 ppp,使得 aaa 为 ppp 的阶原创 2021-07-23 21:25:36 · 336 阅读 · 0 评论 -
「EZEC-6」跳一跳 题解
蓝题都做不出来,我真的是菜到一定境界了。Description传送门Solution首先,我们先将 a,ba,ba,b 分别变为 a100\frac {a} {100}100a 和 b100\frac b {100}100b 在模 109+710^9+7109+7 意义下的值,并令 x=a+bx=a+bx=a+b。可以发现,答案来源于下面这三个部分的贡献:①跳到了第 iii 个位置但没有跳到中心,有 111 的贡献;②跳到了第 iii 个位置且跳到了中心,也有一定的贡献;③跳到了第 ii原创 2021-07-12 14:23:26 · 207 阅读 · 0 评论 -
AGC054 题解(A-C)
SolutionA无脑 dp\text{dp}dp 即可。B花了好长时间才做出来。假设 TTT 依次选择了橘子 t1,t2,⋯ ,tkt_1,t_2,\cdots,t_kt1,t2,⋯,tk,AAA 依次选择了橘子 a1,a2,⋯ ,an−ka_1,a_2,\cdots,a_{n-k}a1,a2,⋯,an−k,考虑构造一组满足上述要求的方案。首先,一定是 TTT 先选,于是他先拿了 t1t_1t1。接下来的一个橘子,必须是 t2t_2t2 或 a2a_2a2,但是若选择了 t2原创 2021-06-28 13:41:13 · 717 阅读 · 0 评论 -
P5292 [HNOI2019 D2T1]校园旅行 题解
无限膜拜 myy。Description传送门Solution算法一首先考虑一个 O(m2)O(m^2)O(m2) 的算法。令 fi,jf_{i,j}fi,j 表示,是否存在一条以 iii 为起点,以 jjj 为终点的标号回文路径。若 fi,j=1f_{i,j}=1fi,j=1,且存在边 (u,i)(v,j)(u,i)(v,j)(u,i)(v,j) 使 u,vu,vu,v 同奇同偶,那么 fu,v=1f_{u,v}=1fu,v=1。注意到状态转移较难确定顺序,所以我们需要使用 queue原创 2021-06-26 16:20:10 · 160 阅读 · 0 评论 -
Codeforces Round #728 (Div. 1) B Tree Array 题解
计不如人,肝败吓疯。Description传送门Solution翻译作品。算法一考虑固定一个根 rrr,作为序列中的第一个位置。从而,一个合法的 bfs\text{bfs}bfs 序列,就等价于从 rrr 往外扩展,每新扩展出一个节点就将其压入的序列。看到期望逆序对数,不难想到枚举 x,y(x>y)x,y(x>y)x,y(x>y),并求出 xxx 在 bfs\text{bfs}bfs 序列中比 yyy 先出现的概率。此时,我们已经三重循环地枚举了 r,x,yr,x,yr,x,翻译 2021-06-26 09:29:29 · 201 阅读 · 0 评论 -
Luogu P6029 [JSOI2010]旅行 题解
Description给定一个 nnn 个点,mmm 条边的无向图,每条边都有一个长度。你可以至多做 kkk 次操作,每次操作中选定两条不同的边并将它们的长度交换。你需要求出,从 111 到 nnn 的最短路的最小值。Solution首先,假设我们已经找到了一条路径,我们必然会将路径上后 kkk 大的边替换为未选择的边中前 kkk 小的边。也就是说,存在某个阈值 LLL,若边权 ≤L\le L≤L 那么它一定被最终选择,若 >L>L>L 那么它可能会被中途替换掉。枚举 LLL 并原创 2021-06-14 07:36:48 · 251 阅读 · 1 评论 -
6.5. 提高组模拟赛 题解
SolutionA对于第 xxx 轮,我们将所有满足 i+j≡x(modn−1)i+j \equiv x \pmod {n-1}i+j≡x(modn−1) 的 (i,j)(i,j)(i,j) 配对。注意这里 i,ji,ji,j 的下标均从 000 开始。但是这样会导致一些数无法配对,例如当 n=6,x=2n=6,x=2n=6,x=2 时,000 已经和 222 配对了,那么 555 就无法和 222 配对了。同时,111 无法与它自己配对,所以最终会剩下 5,15,15,1 未配对。由于每一轮中会有原创 2021-06-05 20:39:15 · 224 阅读 · 2 评论 -
CF1097G 题解
Description给定一棵 nnn 个点的树,求所有点集的最小斯坦纳树大小的 kkk 次方和。答案对 109+710^9+7109+7 取模,1≤n≤105,1≤k≤2001 \le n \le 10^5,1 \le k \le 2001≤n≤105,1≤k≤200。Solution⌈\lceil⌈ 算法二 ⌋\rfloor⌋ 为本题正解,⌈\lceil⌈ 算法一 ⌋\rfloor⌋ 是个人思考的产物,两部分联系不大,可以直接跳到 ⌈\lceil⌈ 算法二 ⌋\rfloor⌋。算法一看到一个原创 2021-05-31 21:44:49 · 244 阅读 · 0 评论 -
Codeforces Round #709 (Div. 2) 游记 & 题解
文章目录游记SolutionT1T2T3T4T5T6Code游记开场之后,凭借自己长时间对思维的训练,很快切掉了前五题;然后开始写代码。吭之吭之,T1 切掉之后,T2 乱搞过不了,第一次自闭。最后竟然过了,于是开 了 T3 。T3 直接二分图建立然后跑最大流就行了,但是不停地 WA ,心想这都能 WA?第二次自闭。然后发现自己竟然把 cnt\text{cnt}cnt 搞成了 111 ,然后改回来只有又超时了 ⋯\cdots⋯ 第三次自闭。然后怀着信仰,加各种奇葩优化加速算法,最后发现自己最大流用的原创 2021-03-23 20:19:10 · 422 阅读 · 3 评论 -
CF1174E (Ehab and the Expected GCD Problem) 题解——数论与dp的完美结合
DescriptionSolutionLemma 1gi+1=t gi(t∈N∗)g_{i+1}=t\ g_i(t \in N^*)gi+1=t gi(t∈N∗),且t≤3t \le 3t≤3。Certification 1根据gcd\gcdgcd的定义,不难发现gi+1g_{i+1}gi+1一定是gig_igi的约数。例如,一个合法的ggg序列是{12,6,6,6,6,3,2,2,1,1,1,1,1,1,1,1}\{ 12,6,6,6,6,3,2,2,1,1,1原创 2021-01-26 12:22:27 · 278 阅读 · 0 评论 -
Luogu P3354 [IOI2005]Riv河流 题解———再加一维!再加一维!
Descriptionn≤100,k≤min(n,50)n≤100,k≤min(n,50)n≤100,k≤min(n,50).Solution考虑树形dpdpdp。状态设计为dpi,jdp_{i,j}dpi,j表示在iii子树中建立了jjj个伐木场的最少花费。考虑状态转移。直接转移看起来十分困难,于是我们采用费用提前计算的dpdpdp技巧。即,对于每个节点都有一个贡献;具体的,第iii个节点的贡献为wi×dis(i,p)w_i×dis(i,p)wi×dis(i,p),这里ppp表示离iii最原创 2021-01-03 10:20:27 · 274 阅读 · 1 评论 -
斜率优化详解(超详细, 有图有代码有注释)
文章目录斜率优化引入从例题开始斜率优化Part 1: 推为斜率式斜率优化Part 2: 合法点集的斜率单调性Part 3: 找到最优决策点Part 4: 斜率优化大流程Part 5: 斜率优化的优化Part 6: 代码详解斜率优化的一些问题斜率优化引入在说斜率优化之前,我们先说说一种更为简单的dpdpdp优化。比如,有一个dpdpdp式子形如dpi=min0≤j<idpj+f(j)+g(i)dp_i=\min_{0≤j<i} {dp_{j}+f(j)+g(i)}dpi=0≤j<imindpj+原创 2020-12-26 11:26:49 · 7729 阅读 · 4 评论 -
二项式反演详解+例题
文章目录基本公式例1 欧拉错排DescriptionSolution基本公式若g(i)=∑j=0iCijf(j)g(i)=\sum_{j=0}^i C_i^j f(j)g(i)=j=0∑iCijf(j)则f(i)=∑j=0i(−1)i−j Cijf(j)f(i)=\sum_{j=0}^i (-1)^{i-j}\ C_{i}^j f(j)f(i)=j=0∑i(−1)i−j Cijf(j)是的,二项式反演本身就是这么简单,本质上只是一个容斥。关键在于,我们要如何利用好这个重原创 2020-12-15 21:48:11 · 2160 阅读 · 2 评论 -
P4292 [WC2010]重建计划——一题多解, 长剖胜出
Description请在图上找到一个长度在[L,R][L,R][L,R]之间的路径,使得这条路径经过的所有边的权值的平均值最大。请输出这个平均值。Solution 1: 二分+点分治+线段树首先,我们二分答案。假设当前二分到的值为midmidmid,我们将所有边权暂时减去midmidmid。显然,在原图中一条边权平均值不小于midmidmid的路径,等价于在新图中权值和为非负数的路径。考虑点分治。我们扫描当前节点nownownow的所有儿子,维护一棵线段树,它以深度(即与nownownow的距离)原创 2020-12-12 21:10:08 · 196 阅读 · 0 评论 -
Luogu P6478(NOI Online #2 T3游戏)详细题解
这样子的神仙题,我当然是做不出来的。辛亏有dy巨佬在,他帮我彻底理解了本题,这是他写的题解。为了把自己的思路再理一遍,我决定再写这一篇详细的题解。Task 1: 状压dpdpdp, 20-40pts令m=n2m=\frac n 2m=2n。我们可以首先确定下小AAA选的节点的顺序,由于小AAA选的节点的顺序已确定,所以此时两种方案不同当且仅当小BBB选的节点的顺序不同。考虑状压dpdpdp。dpst,idp_{st,i}dpst,i表示目前已选的111类节点(即被小BBB拥有了节点)的集合为s原创 2020-11-30 13:13:50 · 219 阅读 · 0 评论 -
Atcoder AGC 043 D题解
一道思维含量很大,代码量很小的紫题。赛时AC人数较少,本蒟蒻也并没有做出来……写个题解总结一下。Description给定一种生成长度为3n3n3n的排列的方法:先随意生成一个排列,然后把这个排列划分为nnn块,每块333个数,111个指针。刚开始每个指针指向的是该段的开头,每次找到所有指针指向的数中最小的那个,把这个数放到这个序列的末尾并将这个指针向右移动一位。如果一个指针出了它原先所在的块,就删除该指针。当所有指针都不存在后,生成完成。求存在多少个长度为3n3n3n的排列是可以按照上述方式生成的原创 2020-10-27 12:34:26 · 329 阅读 · 0 评论
分享