摘要: LCVI.[HNOI2007]梦幻岛宝珠 好题。 明显它是01背包的模型,但值域过大。咋办呢? 我们考虑令 \(f_{i,j}\) 表示只考虑 \(a\times 2^i\) 类型的物品,关于 \(a\) 做的一个背包。显然,暴力求出这个东西的时空复杂度都是可接受的。 我们再考虑 \(g_{i,j} 阅读全文
posted @ 2021-03-30 20:13 Troverld 阅读(67) 评论(0) 推荐(0)
摘要: LCV.[SDOI2008]山贼集团 题解 阅读全文
posted @ 2021-03-30 20:11 Troverld 阅读(48) 评论(0) 推荐(0)
摘要: LCIV.[NOI2005]瑰丽华尔兹 思路1.$O(N^2T)$暴力DP——设$f[t,i,j]$表示$t$时刻在位置$(i,j)$时的最长路径。显然会T。 思路2.$O(N^2T)$暴力DP——观察到一段长为$len$的时间内向某个方向每时刻移动一格,等价于总共移动$len$格。又因为随时可以停 阅读全文
posted @ 2021-03-30 20:09 Troverld 阅读(72) 评论(0) 推荐(0)
摘要: LCIII.[CERC2014]Outer space invaders 一种错误的思路是观察到一定可以构造出一种最优状态使得每次射击都发生在外星人消失的时刻,然后就将所有外星人按照消失时刻排序并设$f[i,j]$表示在第$i$个外星人消失的时刻如果你开了一炮高为(离散化后)$j$的最小费用——但很 阅读全文
posted @ 2021-03-30 20:07 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: LCII.GYM102082E Eulerian Flight Tour (原题是PDF,没有题面的直接页面,就放一个vjudge的链接罢) 首先,当$n$是奇数时,完全图一定是欧拉图,故直接全连即可。 当$n$是奇数时,原图是欧拉图等价于补图上每个节点的度数都为奇。每个节点度数都为奇的充分必要条件 阅读全文
posted @ 2021-03-30 20:06 Troverld 阅读(92) 评论(0) 推荐(0)
摘要: LCI.CF979E Kuro and Topological Parity 我们考虑在一张染色完成的图里,我们连上了一条边,会有何影响? 在同色节点间连边——明显不会有任何影响 在异色节点间连边,但是出发点是个偶点(即有偶数条路径以其为终点的节点)——终点的路径数增加了,但增加的是偶数,故也无影响 阅读全文
posted @ 2021-03-30 20:03 Troverld 阅读(68) 评论(0) 推荐(0)
摘要: LC.CF GYM100739J.Longest cheap palindrome 我们设$f[i,j,k,l,r]$表示: 当前左端取到了位置$i$,右端取到了位置$j$; 当前选择的子序列长度为$k$; 区间$[i,l],[r,j]$中所有字符都被选择时,最小要付出的代价。 转移很简单,枚举左右 阅读全文
posted @ 2021-03-30 20:00 Troverld 阅读(45) 评论(0) 推荐(0)
摘要: LXXXIX.CF288E Polo the Penguin and Lucky Numbers 题解 阅读全文
posted @ 2021-03-30 19:58 Troverld 阅读(33) 评论(0) 推荐(0)
摘要: LXXXVIII.CF543D Road Improvement 常规换根DP题。 我们可以设$f_i$表示以$i$为根的子树中的方案数。则有转移式 \(f_i=\prod\limits_{j\in son_i}(f_j+1)\) 其中$+1$的意思是将边$(i,j)$留作坏边。 显然换根DP就很好 阅读全文
posted @ 2021-03-30 19:56 Troverld 阅读(98) 评论(0) 推荐(0)
摘要: LXXXVII.CF938F Erasing Substrings 一个naive的想法是设$f_{i,j}\(表示在位置\)[1,i]$中,我们删去了长度为$2k(k\in j)$的一些串,所能得到的最小字典序。使用二分+hash可以做到$O(n2\log^2 n)$,无法承受。 发现对于状态$f 阅读全文
posted @ 2021-03-30 19:54 Troverld 阅读(62) 评论(0) 推荐(0)
摘要: LXXXVI.CF295D Greg and Caves 题解 阅读全文
posted @ 2021-03-30 19:52 Troverld 阅读(30) 评论(0) 推荐(0)
摘要: XXXV.CF401D Roman and Numbers 思路: 我们设$num_i$表示$n$中出现了多少个数字$i$。然后就可以设$f[i][j]$表示当填入数字的状态是$i$,且当前数$%m$的余数是$j$时的方案数。则直接转移即可。 复杂度$O(18*2^{18}*m)$。 代码: #in 阅读全文
posted @ 2021-03-30 19:50 Troverld 阅读(64) 评论(0) 推荐(0)
摘要: LXXXIV.CF51F Caterpillar 也不知道算不算DP,反正就放这吧。 首先我们很轻松就能想到关于“环”,或者进一步地说,“边双连通分量”。因为最终图中不能有环,所以每个边双肯定最终会被缩成一个点。那么我们就也来缩一下。 在缩点之后,我们便得到了一片森林。 很明显对于每一棵树,我们都应 阅读全文
posted @ 2021-03-30 19:48 Troverld 阅读(59) 评论(0) 推荐(0)
摘要: LXXXIII.CF261D Maxim and Increasing Subsequence 首先,我们可以发现,当这个重复次数很大的时候,答案就等于序列中出现的不同权值个数。实际上,这个“很大”就可以被当作“大于等于不同权值个数”。 不同权值个数实际上是$\min(n,m)$级别的,其中$n$是 阅读全文
posted @ 2021-03-30 19:47 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: LXXXII.UOJ#11. 【UTR #1】ydc的大树 很明显,如果我们令一个黑点$x$为树根,设它的“好朋友”集合为$\mathbb\(,则路径\)(x,\operatorname{\mathbb})$中所有白节点均可以使$x$不开心。这个可以用树上差分来进行路径加。现在关键是求出$\oper 阅读全文
posted @ 2021-03-30 19:46 Troverld 阅读(84) 评论(0) 推荐(0)
摘要: LXXXI.CF1312G Autocompletion 题解 阅读全文
posted @ 2021-03-30 19:44 Troverld 阅读(48) 评论(0) 推荐(0)
摘要: LXXX.[AGC024E] Sequence Growing Hard 首先,我们肯定能想到从第一个序列开始,依次加入一个新数得到下一个序列,同时还要保证字典序递增。我们如果让新数递增的话,就可以DP了。 我们首先观察往一个序列中加入一个不大于最大值的数会有多少种可能: 我们在$1323$中加入一 阅读全文
posted @ 2021-03-30 19:42 Troverld 阅读(86) 评论(0) 推荐(0)
摘要: LXXIX.[AGC013D] Piling Up 一个很naive的思路就是设$f[i][j]$表示当前进行了$i$步,并且盒子中剩下了$j$个白球的方案数,然后直接DP即可。 但是这样是有问题的——它没有考虑到重复计算的问题。 我们不妨令$+\(符号表示取出黑球,\)-$符号表示取出白球。 则一 阅读全文
posted @ 2021-03-30 19:39 Troverld 阅读(155) 评论(0) 推荐(0)
摘要: LXXVIII.[USACO12OPEN]Bookshelf G 转移很简单,直接设$f[i]$表示前$i$个位置书架的最小高度和即可。 考虑转移。 我们有暴力的公式 \(f[i]=\min\limits_{j=1}^{i}\Big\{f_{j-1}+\max\{h_j,\dots,h_i\}\Bi 阅读全文
posted @ 2021-03-30 19:36 Troverld 阅读(80) 评论(0) 推荐(0)
摘要: LXXVII.[CmdOI2019]任务分配问题 这道题与LXI.CF868F Yet Another Minimization Problem长得很像。实际算法也类似。 首先,题意就是把所有数划分成$k$段,使得每段内部正序对数量之和最少。设$w(i,j)\(表示区间\)(i,j)$内部正序对数量 阅读全文
posted @ 2021-03-30 19:34 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: LXXVI.高速公路 简直恶心到爆炸…… 首先,暴力的DP是非常简单的。设$dis_x$表示位置$x$到根的距离,则有 \(f_x=\min\limits_{y\text{ is an ancestor of }x}f_y+p_x(dis_x-dis_y)+q_x\) 暴力一敲,期望得分$40%$。 阅读全文
posted @ 2021-03-30 19:33 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: LXXV.[USACO20FEB]Help Yourself G 思路: 考虑将线段按照左端点排序。 设$f[i]$表示前$i$个线段的复杂度之和。 则$f[i]=2*f[i-1]+2^{sum[l_i-1]}$。其中$sum_i$是右端点$\leq i$的线段数目,$l_i$是$i$线段的左端点。 阅读全文
posted @ 2021-03-30 19:31 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: LXXIV.[USACO18DEC]Sort It Out P 集合中的数一定是某一条LIS的补集,这点还是比较好想的。 我们要集合的字典序最小,就是让集合的补集的字典序最大。 最大就可以考虑按位处理LIS中的数。 我们从后往前求LIS。我们设$f[i]$表示以当前位置开头的LIS的长度以及数量(类 阅读全文
posted @ 2021-03-30 19:29 Troverld 阅读(63) 评论(0) 推荐(0)
摘要: LXXIII.[USACO19DEC]Greedy Pie Eaters P 考场上写了个暴力贪心(因为看到题面中的 greedy ……)然后光荣爆炸…… 因为$n\leq 300$,考虑区间DP。 设$f[i][j]\(表示有且只有区间\)[i,j]\(里的\)\pi$被吃完后的最大收益。 则我们 阅读全文
posted @ 2021-03-30 19:28 Troverld 阅读(150) 评论(0) 推荐(0)
摘要: LXXII.[HEOI2016/TJOI2016]序列 说实话我对于这道题应该归到DP还是树套树时曾经纠结了很久 我们回忆一下正牌的LIS: 对于$\forall j<i\ \land\ a_j\leq a_i$,$f[i]$可以从$f[j]$转移过来。 现在,我们设$mx_i,mn_i$分别表示位 阅读全文
posted @ 2021-03-30 16:54 Troverld 阅读(59) 评论(0) 推荐(0)
摘要: LXXI.[ABC163F]path pass i 思路: 反向考虑。我们计算出不包含任何颜色为$i$的节点的路径的数量,再用总路径数一减就行。 则,我们删去所有颜色为$i$的节点,整棵树就会被分成许多连通块。则不经过任何一个颜色为$i$的节点的路径数量,就是$\sum\dfrac{(\text{连 阅读全文
posted @ 2021-03-30 16:53 Troverld 阅读(117) 评论(0) 推荐(0)
摘要: LXX.[USACO5.5]贰五语言Two Five 这题已经在我的收藏夹里面吃了大半年的灰了 发现当表格填到某个地方后,它一定是呈现出一条逐行递减的轮廓线的。 因此,我们设$f[a][b][c][d][e]$表示第$1$行填了$a$个……第$5$行填了$e$个的方案数。 则只有$5\geq a\g 阅读全文
posted @ 2021-03-30 16:52 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: LXIX.[USACO18JAN]Stamp Painting G 思路: 发现任何具有一段长度大于等于$K$的相同颜色区间的串都是合法的(这个区间被看作最后一次染色的目标)。 因此反向思考,我们求出所有不具有长度大于等于$k$的相同颜色区间的串数量,然后用总数量(\(M^N\))减一下即可。 我们 阅读全文
posted @ 2021-03-30 16:47 Troverld 阅读(96) 评论(0) 推荐(0)
摘要: LXVIII.[USACO17JAN]Subsequence Reversal P 思路: 发现,翻转一个子序列,就意味着两两互换子序列里面的东西。 于是我们就可以设$f[l][r][L][R]\(表示:\)\max[1,l)=L,\min(r,n]=R$时的最长长度。 则边界为:$L>R$时,\( 阅读全文
posted @ 2021-03-30 16:45 Troverld 阅读(44) 评论(0) 推荐(0)
摘要: LXVII.[USACO15JAN]Moovie Mooving G 思路1. 设$f[i][S]$表示在第$i$场(注意是场,不是部)电影时,已经看了$S$里面的电影是否合法。 然后贪心地取$|S|$最小的状态保存。光荣MLE了,\(21\%\)。 代码: #include<bits/stdc++ 阅读全文
posted @ 2021-03-30 16:44 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: LXVI.[USACO09MAR]Cleaning Up G $n^2$的DP非常eazy,考虑如何优化。 首先,答案一定是$\leq n$的,因为一定可以每一个数单独划一组,此时答案为$n$。 则一组里面最多只能有$\sqrt$个不同的数,不然平方一下就超过$n$了。 因此我们可以设$pos_i$ 阅读全文
posted @ 2021-03-30 16:42 Troverld 阅读(74) 评论(0) 推荐(0)
摘要: LXV.[USACO20OPEN]Sprinklers 2: Return of the Alfalfa P 首先,一个合法的方案,肯定是有一条从左到右向下延伸的轮廓线: 例如: 其中,蓝色系格子是玉米,红色系格子是苜蓿;浅蓝色位置必须放玉米喷射器,深红色格子必须放苜蓿喷射器。深蓝和浅红格子放不放均 阅读全文
posted @ 2021-03-30 16:41 Troverld 阅读(58) 评论(0) 推荐(0)
摘要: LXIV.CF1059E Split the Tree 我们假设对于每个位置,已经求出了它可以往上延伸的长度$len[x]$,然后考虑DP。 设$g[x]$表示子树被分完后的最小边的数量。再设$f[x]$表示当这个数量最小时,点$x$能够往上延伸的最长长度。 这运用了贪心的思想:因为$g[x]$少一 阅读全文
posted @ 2021-03-30 16:39 Troverld 阅读(48) 评论(0) 推荐(0)
摘要: LXIII.CF1029E Tree with Small Distances 我们发现,如果一个点与$1$连了边,那么它的儿子们以及它的父亲都会变成合法的。 因此我们可以设$f[i][0/1/2]$表示:$i$的某个儿子中有边/$i$自己有边/$i$的父亲应该有边的最小值。 转移: \(0\):可 阅读全文
posted @ 2021-03-30 16:38 Troverld 阅读(44) 评论(0) 推荐(0)
摘要: LXII.CF908D New Year and Arbitrary Arrangement 思路: 期望题果然还是恶心呀…… 我们设$f[i][j]$表示当串中有$i$个a和$j$个ab时的方案数。为了方便,设$A=\dfrac{P_a+P_b},B=\dfrac{P_a+P_b}$。 显然,可以 阅读全文
posted @ 2021-03-30 16:37 Troverld 阅读(102) 评论(0) 推荐(0)
摘要: LXI.CF868F Yet Another Minimization Problem 这种题一般来说只有决策单调性一种优化方法。不过,决策单调性可以有很多种应用,例如单调队列或是斜率优化。这题可以选择比较少见的分治优化。 明显,可以设$f[i][j]$表示前$i$个位置分成$j$段的最大收益。显然 阅读全文
posted @ 2021-03-30 16:35 Troverld 阅读(74) 评论(0) 推荐(0)
摘要: LX.CF837D Round Subset 思路: 设$f[l][i][j][k]$表示: 前$l$位,选出$j$个,这$j$个物品能否拥有$j$个$5$和$k$个$2$(bool型) 接下来开始削减位数。 第一维可以直接$01$背包掉。现在只剩$f[i][j][k]$三维。 因为这是bool,我 阅读全文
posted @ 2021-03-30 16:32 Troverld 阅读(74) 评论(0) 推荐(0)
摘要: LIX.CF815C Karen and Supermarket 思路:一看就是树DP。 设$f[i][j][0/1]$表示: 在以$i$为根的子树中,选了$j$个物品,并且从$i$到$1$的路径上的点 没有/有 全部选上的最小花费。 则初始$f[i][0][0]=0$,\(f[i][1][1]=c 阅读全文
posted @ 2021-03-30 16:31 Troverld 阅读(130) 评论(0) 推荐(0)
摘要: LVIII.CF767C Garland 有两种可行方法: 对于一个点,它存在两个儿子,使得这两个儿子的子树中个存在一棵子树,它们的$size$都是$1/3$。 对于一个点,它的$size$是$2/3$,并且它的子树中存在一个子树,它的$size$是$1/3$。 然后我们只需要对于每个节点记录$ha 阅读全文
posted @ 2021-03-30 16:29 Troverld 阅读(62) 评论(0) 推荐(0)
摘要: LVII.CF809D Hitchhiking in the Baltic States 设$f_i$表示长度为$i$的LIS结尾的最小值。为了方便,设$g_i$表示前一个物品的$f_i$(即滚动数组); 则对于一个$[l,r]$的物品: 对于$g_<l$的位置,有$f_i=\max(g_i,l)$ 阅读全文
posted @ 2021-03-30 16:28 Troverld 阅读(46) 评论(0) 推荐(0)
摘要: LVI.CF633F The Chocolate Spree 奇奇怪怪的直径题 思路1.用多种东西拼出来直径 我们设$f[i][0/1/2/3]$表示: \(0\):子树内一条路径的最大值 \(1\):子树内两条路径的最大值 \(2\):子树内一条路径,且起点为$x$的最大值 \(3\):子树内两条 阅读全文
posted @ 2021-03-30 16:27 Troverld 阅读(87) 评论(0) 推荐(0)
摘要: LV.CF621E Wet Shark and Blocks 一眼,\(b\leq 10^9\),矩阵快速幂。 再一眼,\(x\leq 100\),$x^3$刚好,因此可以矩乘; 然后每个块里面的东西都是一样的,仍然可以矩乘; 然后OK。 代码: #include<bits/stdc++.h> us 阅读全文
posted @ 2021-03-30 16:26 Troverld 阅读(72) 评论(0) 推荐(0)
摘要: LIV.CF559C Gerald and Giant Chess DP只要一与排列组合或是容斥等等东西结合在一起就会变得极其毒瘤…… 我们设$f_i$表示:走到第$i$个黑格子上,且之前没有走到任何一个黑格子时的方案数。 则我们如果将棋盘的右下角看作是第$n+1$个黑格子,$f_{n+1}$就是答 阅读全文
posted @ 2021-03-30 16:24 Troverld 阅读(54) 评论(0) 推荐(0)
摘要: LIII.CF285E Positions in Permutations 神题orz…… 我也是第一次听说有个叫二项式反演的神奇东西…… 它具体有两个形式: \(F(n)=\sum\limits_{i=0}^n(-1)^i\dbinom{n}{i}G(i)\Leftrightarrow G(n)= 阅读全文
posted @ 2021-03-30 16:23 Troverld 阅读(78) 评论(0) 推荐(0)
摘要: LII.CF264B Good Sequences 状态很显然。设$f[i]$表示位置$i$的最长长度。 关键是转移——暴力转移是$O(n^2)$的。我们必须找到一个更优秀的转移。 因为一个数的质因子数量是$O(\log n)$的,而只有和这个数具有相同质因子的数是可以转移的; 因此我们可以对于每个 阅读全文
posted @ 2021-03-30 16:22 Troverld 阅读(95) 评论(0) 推荐(0)
摘要: 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$号路不修的情况。 阅读全文
posted @ 2021-03-30 16:21 Troverld 阅读(94) 评论(0) 推荐(0)
摘要: 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 阅读全文
posted @ 2021-03-30 16:20 Troverld 阅读(67) 评论(0) 推荐(0)
摘要: IL.CF24D Broken robot DP必须要有方向性。没有明确顺序的DP都是在耍流氓。这就是为什么有“树上DP”和“DAG上DP”而没有“图上DP”,图上有环就不知道应该按什么顺序做了!(像是基环树DP和仙人掌DP都是缩点了,因此顺序还是确定的;环形DP也有“断环成链”的trick)。 那 阅读全文
posted @ 2021-03-30 16:19 Troverld 阅读(89) 评论(0) 推荐(0)
摘要: XLVIII.CF11D A Simple Task 我感觉状压DP是所有DP中最能玩出花的那一种……因为状态保存下来了因此什么奇奇怪怪的限制都能满足。 比如说这题。 一个环可以看作一条首尾相接的路径。我们可以设$f[S][j]$表示:在集合$S$中的点构成了一条路径,且路径的起点为$j$的方案数。 阅读全文
posted @ 2021-03-30 16:17 Troverld 阅读(56) 评论(0) 推荐(0)
摘要: XLVII.CF906C Party DP是门艺术。 $n\leq 22$一眼状压。但是怎么状压就比较困难,因为同一个$f[x]$可以代表成千上万种含义。 这里我们采用,设$f[x]$表示当$x$集合中所有的点都处于同一个团内的最小代价。 则我们有$f[x \operatornamesta_i]=\ 阅读全文
posted @ 2021-03-30 16:16 Troverld 阅读(53) 评论(0) 推荐(0)
摘要: XLVI.CF1178F2 Long Colorful Strip 首先,每一次染色,最多把一整段连续的同色格子,分成了三段。 并且,明显我们可以把连续的同色格子,直接看作一个。 这就意味着,在这么压缩后,有$m<2n$。 这就意味着$O(m^3)$的复杂度是可以接受的。 还是考虑和前一道题一样的D 阅读全文
posted @ 2021-03-30 16:15 Troverld 阅读(128) 评论(0) 推荐(0)
摘要: XLV.CF1178F1 Short Colorful Strip 考虑设$f[i,j]\(表示:假设区间\)[i,j]$里面一开始所有格子的颜色都是相同的,那么,染成目标状态共有多少种染法。 我们找到$[i,j]$中最小的那个颜色,设为$mp$。则显然,我们下一步要染上$mp$这种颜色。 设最终在 阅读全文
posted @ 2021-03-30 16:12 Troverld 阅读(81) 评论(0) 推荐(0)
摘要: XLVI.[NOI2002]贪吃的九头龙 思路1. 设$f[i][j][k]$表示:在以$i$为根的子树上有$j$个点是归大头吃的,并且第$i$个点是归第$k$个头吃的。 但这样做不仅复杂度高(似乎是$O(n^5)$?),还有个问题:无法保证每个头都至少吃了一个果子。 思路2. 设$f[i][j][ 阅读全文
posted @ 2021-03-30 16:09 Troverld 阅读(72) 评论(0) 推荐(0)
摘要: XLV.CF1088E Ehab and a component choosing problem 思路1.$n^2$DP。 考虑设$f[i][j][0/1]$表示: 节点$i$,子树分了$j$个集合,节点$i$是/否在某个集合内的最大值。 但是这样是没有前途的——你再怎么优化也优化不了,还是只能从 阅读全文
posted @ 2021-03-30 16:07 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: XLIV.CF599E Sandy and Nuts 神题。 本题给我一个忠告:无论什么题,都要先看数据范围(废话)。 没看到$n\leq 13$之前以为是道毒瘤题,看到之后……还是毒瘤题。 因为数据范围小,可以状压。 先不考虑LCA和边的限制。设$f[x][U]$表示:在以$x$为根的子树中,选择 阅读全文
posted @ 2021-03-30 16:05 Troverld 阅读(167) 评论(0) 推荐(0)
摘要: XLIII.CF888F Connecting Vertices 这个奇怪的限制(两条边不能有交点)让我们想到什么? 对于任何一种方案,不存在$x_0<x_1<y_0<y_1$,其中连边$(x_0,y_0),(x_1,y_1)$。 也就是说,对于任何一段区间$[i,j]$,如果里面所有点全都连通: 阅读全文
posted @ 2021-03-30 15:57 Troverld 阅读(195) 评论(0) 推荐(0)
摘要: XLI.CF1067A Array Without Local Maximums 这题DEBUG的我心态爆炸……后来发现是一个$i$打成$j$了……无语。 很容易想到,设$f[i][j][0/1]$表示: 到第$i$位时,位置$i$填入了$j$,且$j\geq\text{位置i-1上的数}$的状态是 阅读全文
posted @ 2021-03-30 15:55 Troverld 阅读(50) 评论(0) 推荐(0)
摘要: XL.[IOI2005]Riv 河流 新转移方式get~~~ 我必须吐槽一下现在赞最多的那篇题解,虽然思路巧妙,但是明显没有“物尽其用”,对于各DP数组的真实含义也没有把握清楚。 一个naive的想法就是:设$f[i][j]$表示:在$i$的子树中,修了$j$个场子,的最小费用。 但是这样不是很好转 阅读全文
posted @ 2021-03-30 15:53 Troverld 阅读(131) 评论(6) 推荐(1)
摘要: 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$个 阅读全文
posted @ 2021-03-30 15:52 Troverld 阅读(87) 评论(0) 推荐(0)
摘要: XXXVII.[JXOI2012]奇怪的道路 神题。 (为以示区别,题面中的$k$我们称作$p$)。 思路1. 观察到$k$很小,考虑状压。 设$f[i][j][k]$表示: 前$i$个位置的边已经全部连完了,位置$[i-p+1,i]$的状态压起来是$j$,并且连了$k$条边的方案数。 代码: #i 阅读全文
posted @ 2021-03-30 15:51 Troverld 阅读(59) 评论(0) 推荐(0)
摘要: XXXVI.[BJOI2017]喷式水战改 这题类似于毒瘤数据结构题,想起来非常简单,但是写起来…… 平衡树是必须写的——这种毒瘤的维护肯定要写平衡树。 然后说一下怎么DP吧。在每个节点上维护$f[i][j]$,表示在以该节点为根的子树上,阶段$i$到阶段$j$的最大收益。 直接在pushup时维护 阅读全文
posted @ 2021-03-30 15:49 Troverld 阅读(63) 评论(0) 推荐(0)
摘要: XXXV.[GDOI2014]拯救莫莉斯 因为$nm\leq 50,m\leq n$, 所以$m$最大只会到$7$,可以状压。 考虑设$f[i][j][k]$表示: 在前$i-1$行已经填好的情况下,第$i-1$行状态为$j$,第$i$行状态为$k$的最小代价和最小数量(是个std::pair)。 阅读全文
posted @ 2021-03-30 15:47 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: XXXIV.[SCOI2008]奖励关 $n\leq 15$就是一眼状压。但这题难点不是状压,而是期望。 应该很容易就能想到,设$f[i][j]$表示前$i$次操作后,状态为$j$的期望收益。但这有个问题——我们不知道如果刷到一个负数收益应不应该选,因为我们不知道这个负数收益在后面会带给我们怎样的期 阅读全文
posted @ 2021-03-30 15:45 Troverld 阅读(66) 评论(0) 推荐(0)
摘要: XXXIII.[HAOI2018]奇怪的背包 神题。 对于某个大小为$v$的物品,它所能表示出的位置的集合等于$\gcd(v,P)$所能表示的集合。 对于某些大小为$v_1,\dots,v_k$的物品,位置集合为$\gcd{v_1,\dots,v_k,P}$。 因此考虑DP。 我们找出所有$P$的约 阅读全文
posted @ 2021-03-30 15:44 Troverld 阅读(70) 评论(0) 推荐(0)
摘要: XXXII.[HNOI2009]双递增序列 某科学的消减维数 思路1.暴力五维DP: 设$f[h][i][j][k][l]$表示:前$h$位中,$U$有$i$位,$V$有$j$位,$U$以$k$结尾,$V$以$l$结尾是否合法。 显然过不去。 思路2.暴力四维DP: 发现必有$i+j=h$,因此我们 阅读全文
posted @ 2021-03-30 15:39 Troverld 阅读(83) 评论(0) 推荐(0)
摘要: XXXI.[CQOI2018]解锁屏幕 $n\leq 20$一眼状压。 设$f[i][j]$表示:访问状态为$i$,当前在$j$点的方案数。 我们枚举一个$k$,表示下一个要去的地方;要判断$j$能不能转移到$k$,还要枚举$l$,判断$j,k,l$是否共线。判断共线是基础向量,一次点积+一次叉积带 阅读全文
posted @ 2021-03-30 15:38 Troverld 阅读(63) 评论(0) 推荐(0)
摘要: XXX.[SDOI2007]游戏 论STL的百种用法 可以观察到可以接龙的对构成一张DAG。因此我们要找到DAG中最长路。这个随便DP就可以了。 关键是找到可以互相转移的位置。 $n^2$枚举非常危险,因为还有一个$26$判断的常数,没试,估计过不了。 我们必须寻找复杂度更低的算法。 发现一个串只与 阅读全文
posted @ 2021-03-30 15:34 Troverld 阅读(60) 评论(0) 推荐(0)
摘要: XXIX.[SDOI2008]Sue的小球 DP做多了,手感自然就出来了。 话说这题打着“小球”的名字题目中却是“彩蛋”是怎么回事 首先,这个下落速度$v$,尽管题面中说它可能为负数,但我们想一想,这可能吗?如果是负数答案就是正无穷(可以等着这个球一直向上飞),因此排除球速为负的可能。 如果是这样的 阅读全文
posted @ 2021-03-30 15:32 Troverld 阅读(55) 评论(0) 推荐(0)
摘要: XXVIII.[HAOI2006]数字序列 第一问: 正难则反。我们考虑从这个序列中找出最多可以保留的数。 如果两个下标$i,j(i<j)$都是要保留的,那么保留的充要条件就是 \(a_j-a_i\geq j-i\) 因为$(i,j)$开区间中的其它数要保证仍然有可以修改到的位置。例如 10 4 3 阅读全文
posted @ 2021-03-30 15:31 Troverld 阅读(65) 评论(0) 推荐(0)
摘要: XXVII.[SHOI2012]随机树 \(q=1\): 考虑令$f_i$表示:一棵有$i$个叶节点的树,叶节点平均深度的期望值。 则$f_i=f_+\dfrac{2}$。 证明: 我们随便从$i-1$个叶子中选一个出来,展开它, 则这次展开期望能为叶子的深度和增加$2*(f_+1)-f_$。 但是 阅读全文
posted @ 2021-03-30 15:27 Troverld 阅读(108) 评论(0) 推荐(0)
摘要: XXVI.[FJOI2007]轮状病毒 论此题的一百种不同解法 首先,这题是有通项公式的—— \(f[i]=3f[i-1]-f[i-2]+2\), 或$f[i]=i^2-4*[i|2]$。 当然这并不是我们DP笔记的讨论内容。 可以观察到,答案相当于: 将$1$到$n$共$n$个物品分成一些相邻的组 阅读全文
posted @ 2021-03-30 15:25 Troverld 阅读(70) 评论(0) 推荐(0)
摘要: XXV.[CQOI2017]老C的键盘 和前一题 完 全 一 致。 那就不讲了,双倍经验水过。 代码: #include<bits/stdc++.h> using namespace std; const int mod=1e9+7; int n,f[1010][1010],head[1010],c 阅读全文
posted @ 2021-03-30 15:23 Troverld 阅读(56) 评论(0) 推荐(0)
摘要: XXIV.[HEOI2013]SAO 这题思路和我们之前的XXII.[ZJOI2010]排列计数类似,也是一棵树的拓扑序数。但是,那题边只有一种情况(相当于这题的第三组$20%$的特殊限制),这题情况就比较复杂。 我们先忽略边方向的限制,把整张图看作一棵无向树。不妨令$0$号节点为根。 发现只维护一 阅读全文
posted @ 2021-03-30 15:22 Troverld 阅读(73) 评论(0) 推荐(0)
摘要: XXIII.[HNOI2010]公交线路 状压+矩乘的好题。 因为每$p$个位置中,每辆车就至少有$1$个位置, 所以我们可以状压一下。 设$f[i][j]$表示: 区间$[i,i+p-1]$内的车站现在的规划情况是$j$的方案数。 显然,必有$j$的第$p$位是$1$,且$j$共有$k$位是$1$ 阅读全文
posted @ 2021-03-30 15:20 Troverld 阅读(58) 评论(0) 推荐(0)
摘要: XXII.[ZJOI2010]排列计数 按照这个关系可以建出一棵树出来;然后一组合法的排列就是这棵树的一组拓扑序。 设$f_x$表示以$x$为根的子树的拓扑序种数,$sz_x$表示以$x$为根的子树的大小, 则有$f_x=\prod\limits_{y\in Son_x}f_y*C_{(sz_x-1 阅读全文
posted @ 2021-03-30 15:18 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: XXI.[HAOI2011]Problem c 这题还是挺简单的~~~ 关于每个位置$i$,在一种合法的方案 \(a\) 中,必有 \((\sum\limits_{j=1}^n[a_j\geq i])\leq n-i+1\)。 因为,每一个$a_j\geq i$都会占据$i$以后的某个位置,而$i$ 阅读全文
posted @ 2021-03-30 15:17 Troverld 阅读(60) 评论(0) 推荐(0)
摘要: XX.[SCOI2010]股票交易 这题状态很好想:设$f[i][j]$表示:第$i$天,持有$j$支股票,的最大收益。 然后我就脑残了,想了个$O(n2m2)$的弱智初始DP,然后就WA掉惹。 实际上转移也挺简单的。设第$i$天买股票花$a_i$元,卖股票花$b_i$元,可以买$A_i$次,卖$B 阅读全文
posted @ 2021-03-30 15:16 Troverld 阅读(80) 评论(0) 推荐(0)
摘要: IXX.[HNOI2005]星际贸易 第一问直接背包一下就行,是模板。 然后,因为题面中的一句话: ……并使得只有一种获得最大贸易值的方法。 因此我们可以直接根据各状态是从哪个前驱状态转移而来直接得出那些必须要访问的星球。 注意,你所规定的这条路径必须满足贸易值最大(不管合不合法(走不走的完),但贸 阅读全文
posted @ 2021-03-30 15:14 Troverld 阅读(112) 评论(0) 推荐(0)
摘要: XVIII.[HAOI2010]软件安装 不知道大家有没有做过这道题[CTSC1997]选课啊,反正我一看到这道题,就想起了它——都是树上背包。所以我便高高兴兴的敲了一发背包交上去。 然后呢?光荣的WA掉了。 为什么呢? 因为这道题和选课不一样;选课是你没有修完前一节课就不能修这节;但是本题是你装软 阅读全文
posted @ 2021-03-30 15:13 Troverld 阅读(48) 评论(0) 推荐(0)
摘要: XVII.CF311B Cats Transport 推式子时间到~~~ 我们首先对题目中的$d_i$做前缀和,求出每座山距离原点距离; 然后对于第$i$只猫,如果一个饲养员在$t_i-d_$时刻以后出发就可以接到它; 注意,饲养员可以在负时刻就出发!!!我之前想多了以为只能在非负时刻出发而纳闷了好 阅读全文
posted @ 2021-03-30 15:11 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: XVI.[HDU3507]Print Article 没什么好说的,这题比任务安排还水,随便推推完事。 代码: #include<bits/stdc++.h> using namespace std; #define int long long int n,m,s[500100],f[500100] 阅读全文
posted @ 2021-03-30 15:10 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: XV.[JSOI2009]火星藏宝图 一个非常显然的结论:在最优方案中,路径上的任意两个点所构成的矩形内部一定不存在其它点。不然的化,在这个其它的点多停留一下一定不会更差。 因为$a2+b2<(a+b)^2$。 但是,就算想到这个,我也得不出什么好的转移方式 考虑将所有岛屿按照行优先,如果行相同就按 阅读全文
posted @ 2021-03-30 15:09 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: XIV.[SDOI2013]保护出题人 这题好像不算DP……但是涉及到斜率和凸包的题都是好题 因为这题要求是确保没有任何一个姜丝能活着走到门口, 所以设血量的前缀和为$s$,每两只姜丝间距离为$m$, 则对于 \(\forall i\) , 都应有$ans_i=\max\limits_^{\dfra 阅读全文
posted @ 2021-03-30 15:08 Troverld 阅读(57) 评论(0) 推荐(0)
摘要: XIII.[SDOI2016]征途 这题已经在我的任务列表里吃了大半年的灰了……(去年7月加进来的,到现在已经8个月了) 开始推式子。 我们设第$i$天的路程是$l_i$, 则我们的目的是最小化 \(s^2=\sum\limits_{i=1}^m\dfrac{(\overline{l}-l_i)^2 阅读全文
posted @ 2021-03-30 15:07 Troverld 阅读(76) 评论(0) 推荐(0)
摘要: XII.[SDOI2012]任务安排 同上一题一样,不过,这题的$t_i$可能有负数,这就意味着前缀和不再是单调增的! 我们不能再像前一题一样用单调队列维护了——但是因为队尾的单调性仍然存在,我们仍然可以维护上凸包。这就启发我们使用单调栈来维护斜率,并且在单调栈中二分。 我们不妨想一想,如果这个$c 阅读全文
posted @ 2021-03-30 15:06 Troverld 阅读(59) 评论(0) 推荐(0)
摘要: XII.任务安排 斜率优化真$\color\colorbox$有意思!! 设$t[i]$表示原题中的$t_i$的前缀和,$c[i]$表示原题中$f_i$的前缀和,$m$表示启动时间$s$。 思路1:$n^3$DP: 设$f[i][j]$表示:前$i$个位置,分成$j$组,的最快时间。 则有$f[i] 阅读全文
posted @ 2021-03-30 15:04 Troverld 阅读(67) 评论(0) 推荐(0)
摘要: XI.[SHOI2007]书柜的尺寸 排序是各类DP题中只要出现了物品这个意象后的常客。 我们首先将书按照高度递减排序。这样,一个书柜的高度,就是第一本被放进来的书的高度。 设$f[i][j][k]$表示:DP到第$i$本书,第一层书架的长度为$j$,第二层书架的长度为$k$时,整个书柜的最小高度。 阅读全文
posted @ 2021-03-30 15:03 Troverld 阅读(97) 评论(0) 推荐(0)
摘要: X.[SCOI2008]着色方案 双倍经验,双倍快乐 可以看出这题直接是上一题的无编号版,直接套上一题的板子,乘上逆元的倒数直接水过,还轻轻松松完虐正解(五维暴力DP) 代码: #include<bits/stdc++.h> using namespace std; const int mod=1e 阅读全文
posted @ 2021-03-30 15:02 Troverld 阅读(103) 评论(0) 推荐(0)
摘要: IX.[AHOI2018初中组]球球的排列 论DP的百种用法之一 因为DP必须有一种全面的状态,但是这道题……似乎排列等等问题都不是DP擅长处理的地方。 首先分析性质。我们发现,这种不能放在一起的关系具有传递性。因为如果$xy=a2,xz=b2$,那么$yz=\dfrac{(xy)(yz)}{x2} 阅读全文
posted @ 2021-03-30 14:59 Troverld 阅读(191) 评论(0) 推荐(1)
摘要: VIII.CF149D Coloring Brackets 考虑设$f[i][j][k=0/1/2][l=0/1/2]\(表示:将区间\)[i,j]$里的东西染色,左端染上颜色$k$,右端染上颜色$l$($0$为红,$1$为蓝,$2$不染)的方案数。 因为这个$n$是$700$,$n3$似乎过不了, 阅读全文
posted @ 2021-03-30 14:56 Troverld 阅读(70) 评论(0) 推荐(0)
摘要: VII.[SDOI2009]Bill的挑战 第一眼看上去不会做。第二眼发现$n\leq 15$直觉状压。第三眼算算复杂度发现OK,然后就没问题了。 我们设$f[i][j]$表示: 当前DP到了第$i$位, 所有串的匹配成功的状态是$j$, 的方案数。 通过预处理一个状压数组$mat[i][j]$表示 阅读全文
posted @ 2021-03-30 14:55 Troverld 阅读(48) 评论(0) 推荐(0)
摘要: VI.[HAOI2008]玩具取名 状压一下。 我们令$f[i][j]\(为:区间\)[i,j]$的串,能转移到字母的状态(是个 bitmask ) 至于转移吗……劈开拼一起即可。 代码: #include<bits/stdc++.h> using namespace std; int m[4],n 阅读全文
posted @ 2021-03-30 14:53 Troverld 阅读(79) 评论(0) 推荐(0)
摘要: IV.[SCOI2003]字符串折叠 一眼区间DP。 设$f[i][j]\(表示:将区间\)[i,j]$内的所有东西压一起的最短长度。 显然,有两种方法: 1.在中间一刀劈开,然后拼一起。 2.找到它的循环节,然后把整个串压一起。 至于找循环节吗……枚举循环节长度,然后无脑哈希一下。 注意,你可能会 阅读全文
posted @ 2021-03-30 14:52 Troverld 阅读(64) 评论(0) 推荐(0)
摘要: V.[SCOI2007]压缩 这种DP状态需要考虑到各种状态的题最讨厌了…… 思路1.设$f[i][j]\(表示将区间\)[i,j]$里面所有东西压一起的最小代价 有两种转移: 砍成两段拼一起 样例里面这种方法,MaRR=aaaa 这种倍增法 然后我就写出了这样的代码: #include<bits/ 阅读全文
posted @ 2021-03-30 14:50 Troverld 阅读(75) 评论(0) 推荐(0)
摘要: III.[SCOI2009]粉刷匠 所有的DP,只要式子一推出来(不管复杂度),那就很简单了,因为优化是成千上万种的…… 思路1.我们考虑设$f[i][j][k]$表示:当前DP到第$i$块木板的第$j$个位置,共涂了$k$次,所能获得的最大收益。因为还要枚举当前这次涂是从哪到哪的,因此复杂度为$O 阅读全文
posted @ 2021-03-30 14:47 Troverld 阅读(79) 评论(0) 推荐(0)
摘要: II.[HAOI2010]计数 我不得不吐槽出题人的语文实在太……那个了。 翻译一下:给你一个数,求它是全排列中第几个。 为什么呢?我们看一下给定的那个${1,2}$的例子。显然,在任何合法的数中,所有的非零数的出现次数,在每个数中都是相同的。如果我们允许前导零,那么所有的$0$的出现次数也都相同了 阅读全文
posted @ 2021-03-30 14:46 Troverld 阅读(45) 评论(0) 推荐(0)
摘要: I.[JSOI2010]快递服务 我们约定共有$n$个地点,依次登记了$m$家公司。 思路1. 设$f[l][i][j][k]$表示:当前某一个司机在第$i$家公司(注意是公司!$1000$家那个!),第二个司机在第$j$家,第三个司机在第$k$家,当前我们遍历到了第$l$家公司。依次转移即可。 复 阅读全文
posted @ 2021-03-30 14:43 Troverld 阅读(58) 评论(0) 推荐(0)
摘要: XII.[CFGYM100221C]Forbidden Subwords ”双向无限“之类东西太抽象了,我们不妨从简单点的地方考虑。比如说,有限串。 一个有限串中没有出现任何禁忌串的充要条件是什么?沿着AC自动机上边走时没有碰到任何结束点。 现在,我们考虑一个右侧无限的串(即有一个明确开头,但另一端 阅读全文
posted @ 2021-03-30 14:42 Troverld 阅读(77) 评论(0) 推荐(0)
摘要: XI.CF1437G Death DBMS 考虑建出AC自动机,然后在上面跑询问串。于是问题转为单点修改,路径求 \(\max\),无脑上树剖在$fail$树上维护即可。 注意到会有相同的串,那就在每个节点上一个multiset维护最大值即可。 复杂度 \(O(n\log^2n)\)。 代码: #i 阅读全文
posted @ 2021-03-30 14:40 Troverld 阅读(61) 评论(0) 推荐(0)
摘要: X.[ICPC2019 WF]First of Her Name 这题的一种解法是把所有东西(名字串和翻转的询问串)建出一棵树来,然后跑树上后缀排序,用二分+哈希求出$height$数组,然后使用单调栈找出每个位置最多能够向左向右延伸多远。但是按照某人的说法出题人好像出了卡此算法的数据,所以最后WA 阅读全文
posted @ 2021-03-30 14:38 Troverld 阅读(141) 评论(0) 推荐(0)