随笔分类 - DP
摘要:LVI.CF633F The Chocolate Spree 奇奇怪怪的直径题 思路1.用多种东西拼出来直径 我们设$f[i][0/1/2/3]$表示: \(0\):子树内一条路径的最大值 \(1\):子树内两条路径的最大值 \(2\):子树内一条路径,且起点为$x$的最大值 \(3\):子树内两条
阅读全文
摘要:LV.CF621E Wet Shark and Blocks 一眼,\(b\leq 10^9\),矩阵快速幂。 再一眼,\(x\leq 100\),$x^3$刚好,因此可以矩乘; 然后每个块里面的东西都是一样的,仍然可以矩乘; 然后OK。 代码: #include<bits/stdc++.h> us
阅读全文
摘要:LIV.CF559C Gerald and Giant Chess DP只要一与排列组合或是容斥等等东西结合在一起就会变得极其毒瘤…… 我们设$f_i$表示:走到第$i$个黑格子上,且之前没有走到任何一个黑格子时的方案数。 则我们如果将棋盘的右下角看作是第$n+1$个黑格子,$f_{n+1}$就是答
阅读全文
摘要:LIII.CF285E Positions in Permutations 神题orz…… 我也是第一次听说有个叫二项式反演的神奇东西…… 它具体有两个形式: \(F(n)=\sum\limits_{i=0}^n(-1)^i\dbinom{n}{i}G(i)\Leftrightarrow G(n)=
阅读全文
摘要:LII.CF264B Good Sequences 状态很显然。设$f[i]$表示位置$i$的最长长度。 关键是转移——暴力转移是$O(n^2)$的。我们必须找到一个更优秀的转移。 因为一个数的质因子数量是$O(\log n)$的,而只有和这个数具有相同质因子的数是可以转移的; 因此我们可以对于每个
阅读全文
摘要:LI.CF115E Linear Kingdom Races 思路1. 设$f[i][j]$表示: 当前DP到第$i$位,且最右边的一个没有修的路是第$j$条路,的最大收益。 则有 \(f[i][i]=\max\limits_{j=0}^{i-1}f[i-1][j]\) 这是在$i$号路不修的情况。
阅读全文
摘要:L.CF53E Dead Ends \(n\leq 10\),我还是第一次见到这么小的状压…… 我们设$f[S][s]$表示:将集合$S$内的点连成一棵树,且集合$s$里的节点是叶子节点的方案数。 则有$f[S\cup{j}][{s\setminus i}\cup{j}]+=f[S][s],i\in
阅读全文
摘要:IL.CF24D Broken robot DP必须要有方向性。没有明确顺序的DP都是在耍流氓。这就是为什么有“树上DP”和“DAG上DP”而没有“图上DP”,图上有环就不知道应该按什么顺序做了!(像是基环树DP和仙人掌DP都是缩点了,因此顺序还是确定的;环形DP也有“断环成链”的trick)。 那
阅读全文
摘要:XLVIII.CF11D A Simple Task 我感觉状压DP是所有DP中最能玩出花的那一种……因为状态保存下来了因此什么奇奇怪怪的限制都能满足。 比如说这题。 一个环可以看作一条首尾相接的路径。我们可以设$f[S][j]$表示:在集合$S$中的点构成了一条路径,且路径的起点为$j$的方案数。
阅读全文
摘要:XLVII.CF906C Party DP是门艺术。 $n\leq 22$一眼状压。但是怎么状压就比较困难,因为同一个$f[x]$可以代表成千上万种含义。 这里我们采用,设$f[x]$表示当$x$集合中所有的点都处于同一个团内的最小代价。 则我们有$f[x \operatornamesta_i]=\
阅读全文
摘要:XLVI.CF1178F2 Long Colorful Strip 首先,每一次染色,最多把一整段连续的同色格子,分成了三段。 并且,明显我们可以把连续的同色格子,直接看作一个。 这就意味着,在这么压缩后,有$m<2n$。 这就意味着$O(m^3)$的复杂度是可以接受的。 还是考虑和前一道题一样的D
阅读全文
摘要:XLV.CF1178F1 Short Colorful Strip 考虑设$f[i,j]\(表示:假设区间\)[i,j]$里面一开始所有格子的颜色都是相同的,那么,染成目标状态共有多少种染法。 我们找到$[i,j]$中最小的那个颜色,设为$mp$。则显然,我们下一步要染上$mp$这种颜色。 设最终在
阅读全文
摘要:XLVI.[NOI2002]贪吃的九头龙 思路1. 设$f[i][j][k]$表示:在以$i$为根的子树上有$j$个点是归大头吃的,并且第$i$个点是归第$k$个头吃的。 但这样做不仅复杂度高(似乎是$O(n^5)$?),还有个问题:无法保证每个头都至少吃了一个果子。 思路2. 设$f[i][j][
阅读全文
摘要:XLV.CF1088E Ehab and a component choosing problem 思路1.$n^2$DP。 考虑设$f[i][j][0/1]$表示: 节点$i$,子树分了$j$个集合,节点$i$是/否在某个集合内的最大值。 但是这样是没有前途的——你再怎么优化也优化不了,还是只能从
阅读全文
摘要:XLIV.CF599E Sandy and Nuts 神题。 本题给我一个忠告:无论什么题,都要先看数据范围(废话)。 没看到$n\leq 13$之前以为是道毒瘤题,看到之后……还是毒瘤题。 因为数据范围小,可以状压。 先不考虑LCA和边的限制。设$f[x][U]$表示:在以$x$为根的子树中,选择
阅读全文
摘要:XLIII.CF888F Connecting Vertices 这个奇怪的限制(两条边不能有交点)让我们想到什么? 对于任何一种方案,不存在$x_0<x_1<y_0<y_1$,其中连边$(x_0,y_0),(x_1,y_1)$。 也就是说,对于任何一段区间$[i,j]$,如果里面所有点全都连通:
阅读全文
摘要:XLI.CF1067A Array Without Local Maximums 这题DEBUG的我心态爆炸……后来发现是一个$i$打成$j$了……无语。 很容易想到,设$f[i][j][0/1]$表示: 到第$i$位时,位置$i$填入了$j$,且$j\geq\text{位置i-1上的数}$的状态是
阅读全文
摘要:XL.[IOI2005]Riv 河流 新转移方式get~~~ 我必须吐槽一下现在赞最多的那篇题解,虽然思路巧妙,但是明显没有“物尽其用”,对于各DP数组的真实含义也没有把握清楚。 一个naive的想法就是:设$f[i][j]$表示:在$i$的子树中,修了$j$个场子,的最小费用。 但是这样不是很好转
阅读全文
摘要:XXXVIII.[CQOI2013]二进制A+B 最后判无解试了很多次才判成功……主要是因为“$a,b,c\leq2^{30}\(中有个\)\leq$而不是$<$就很烦人。 思路很简单:设$f[i][j][k][l][0/1]$表示: 按位DP到第$i$位, $a,b,c$中分别用了$j,k,l$个
阅读全文
摘要:XXXVII.[JXOI2012]奇怪的道路 神题。 (为以示区别,题面中的$k$我们称作$p$)。 思路1. 观察到$k$很小,考虑状压。 设$f[i][j][k]$表示: 前$i$个位置的边已经全部连完了,位置$[i-p+1,i]$的状态压起来是$j$,并且连了$k$条边的方案数。 代码: #i
阅读全文

浙公网安备 33010602011771号