9月杂题

想了想以后的笔记不必写得太复杂,把解题精髓记下就可以了,这样也方便复习。

P6880 [JOI 2020 Final] オリンピックバス

直接枚举翻转的边然后跑最短路复杂度爆炸,但考虑一个不在 \(1\)\(n\) 以及 \(n\)\(1\) 最短路上的边的答案其实是好算的:建出以 \(1\) 为起点的最短路树,以 \(n\) 为起点的最短路树,再在反图上建出上面两种树即可计算;在最短路上面的暴力。

BZOJ3694 最短路

套路地,计算每条边的删边最短路,考虑枚举一条非树边,计算包含其到某个点的答案并用其更新树上对应链上的答案。

拆贡献,需要解决多次链 chkmin 的操作,最后输出每条边的权值。这个问题可以对操作按权值排序后每次暴力跳用并查集合并来解决。

P4308 [CTSC2011] 幸福路径

倍增,设 \(f_{t,i,j}\) 为从 \(i\)\(j\),走了 \(2^t\) 步的最大收益,类似 Floyd 转移。

CF1100E Andrew and Taxi

显然二分,现在问题是检查这张有向图能否通过只改权值 \(\le mid\) 的边的方向使其无环。

\(\le mid\) 的总可以定成无环,故将权值 \(>mid\) 的边建图跑拓扑排序,如果有环就无解,否则,枚举 \(\le mid\) 的边查看两端拓扑序来定向。

P1954 [NOI2010] 航空管制

建图跑出每个点真实的 \(k\) 是多少,第一问即将 \(k\) 值从大到小依次考虑倒序安放。第二问相当于考虑 \(i\) 时,拓扑序在 \(i\) 之前的都要早飞,那么将拓扑序在这之后的按 \(k\) 值从大到小安放,最后一个空出来的位置就是 \(i\)

P7624 [AHOI2021初中组] 地铁

设环长为 \(C\),随后建图跑差分约束查看是否有无负环(有无解)。

但本题需要求 \(C\) 的合法解个数,注意到其一定是一个区间,那么我们考虑二分,但是如果当前 \(mid\) 不合法是要变小还是变大呢?可以查看负环中 \(C\) 的系数,为正即要变大,为负即要变小,为零就与 \(C\) 无关,原问题无解。

P2272 [ZJOI2007] 最大半连通子图

注意到题目所说的最大半连通子图即原图 SCC 缩点后由 SCC 组成的最大的链,直接 DP 即可。

S15.24.11.3. 都是假的

行与列显然独立,考虑只有一行怎么做。发现如果切成 \(x\) 段合法,切成 \(p\) 段也合法,那么切成 \(x\times p\) 段也合法(\(\gcd(x,p)=1\)),也就是积性函数。

那么快速判断切成 \(x\) 段合法的方法可以类似字符串判周期的方法用一次询问,但这道题要求无交,就只能奇数问两次,偶数问三次。

P5975 [CEOI2009] photo

注意到矩形一定互不相交,于是区间 DP:\(f_{i,j,k}\) 为考虑横坐标 \([i,j]\),纵坐标都在 \(k\) 之上,转移考虑将 \([i,j]\) 切两边或者放一个最大的矩形从更小的高度转移过来。

P5369 [PKUSC2018] 最大前缀和

观察最大前缀和的性质后状压 DP。

P3959 [NOIP2017 提高组] 宝藏

按深度分层状压 DP。

[ARC106E] Medals

Hall 定理后状压 DP。

CF1773G Game of Questions

注意到 问题 被重复选择不会让局势变化,故只用状压在场的人。

CF1726E Almost Perfect

将排列画成置换环,那么这个环必须满足一条边两端点编号差 \(\le 1\),那么就只可能是一、二、四元环。

CF1842G Tenzing and Random Operations

将一次操作对答案的影响,拆成每个元素可以使用的资源。

CF1574F Occurrences

观察序列 \(a\) 满足的要求相当于包含 \(A_i\) 中一个元素,就必须包含 \(A_i\) 的所有元素并且还满足顺序,进而建图后跑总量一定的完全背包。

CF1765C Card Guessing

通过固定花色转移,记录花色最小的牌数量。

[ABC262Ex] Max Limited Sequence

区间极值限制 DP,将每个上界 \(x\) 拆成区间内至少一个 \(=x\),全都要 \(\le x\)。设 \(f_{i,j}\) 考虑位置 \(i\),离 \(i\) 最近的 1 位置为 \(j\) 来转移来避免容斥。

P7606 [THUPC2021] 混乱邪恶

转移相当于平面游走,可以通过随机打乱来限制范围。

CF1909F2 Small Permutation Problem (Hard Version)

将排列作为 \((i,p_i)\) 画在平面上,那么相当于在两个 \(a_i\ne 1\) 的 L 形区间内放一些互不攻击的车,容斥 DP。

[AGC060C] Large Heap

只有极左链上的点和极右链上的点,那么 DP 当前放数放到了极左链的 \(i\) 层,极右链的 \(j\) 层。

CF1730F Almost Sorted

将排列 \(q\) 后查看 \(p_{q_i}\) 看作对 \(p\) 重排。观察题目对 \(p\) 的要求后发现 DP 时只用关心最小未填的数 \(i\)\([i,i+k]\) 的填入情况。

CF1174E Ehab and the Expected GCD Problem

分析前缀 GCD 种类数的性质,发现开头的数是关键的,他必须含有的质因子非常多,即只能由很多 \(2\) 和最多一个 \(3\) 组成,于是 DP 时记录 2 与 3 的个数。

CF1799G Count Voting

容斥 DP,妙处在于多重排列的计算,可以把分母拆掉放到 DP 转移的过程中。

CF1559E Mocha and Stars

看见 \(\gcd=1\) 想到容斥,于是容斥每次都做一遍背包,因为每一次的容量组成的是调和级数所以对了。

CF1781F Bracket Insertion

括号这种东西想到将 \((\) 设为 \(+1\)\()\) 设为 \(-1\),那么合法当且仅当最小前缀和为 \(0\)。于是记录最小前缀和后区间 DP。

P10813 【MX-S2-T4】换

刻画一个序列是否被排序:枚举数 \(x\),将序列中 \(\le x\) 的置为 \(0\)\(>x\) 置为 \(1\),那么对于每一个数 \(x\),这个 01 序列都有序,那么就是排好的。从小到大扫描 \(x\) 的过程是全 0 变为全 1 的过程,DP 记录这个 01 序列。

CF21D Traveling Graph

无向图有欧拉回路等价于每个点度数为偶,状压为度数奇数的点。

[AGC013E] Placing Squares

平方的组合意义:有顺序选出两个元素(可以是一个)的方案数。于是 DP 记录没选/选了第 1 个/选了第 2 个。

P4827 [国家集训队] Crash 的文明世界

使用斯特林反演,注意到 \(f_{x,j}=\sum_{i\in x}C^i_{dis(i,x)}\) 可以换根:\(C^i_{dis(i,x)}=C_{dis(i,x)-1}^i+C_{dis(i,x)-1}^{i-1}\)

CF1327F AND Segments

拆位后就是 [ABC262Ex] Max Limited Sequence 的最小值版本。

CF1580B Mathematics Curriculum

看到最大值想到笛卡尔树,题意转换为在笛卡尔树上深度为 \(m\) 的元素恰好有 \(k\) 个。

P6326 Shopping

点分治,树上依赖性背包。

[ARC184B] 123 Set

画出数表,选数就是相当于用一个「 形来覆盖数表,用状压 DP。

[ARC160F] Count Sorted Arrays

同 MXOI 换。

CF1830D Mex Tree

点权为 0/1 的 mex,可以转换成颜色——拥有不同颜色的路径的权为 2,否则为 0/1,这启发我们维护树上颜色块,又通过计算答案下界来优化。

CF1750F Majority

考虑一个不合法的 S 最后会变成什么,一定是一段 1 一段 0 交替,并且一段 0 的长度一定大于左右两端 1 长度的总和,于是面向结果 DP 出不合法的序列个数。

CF1179D Fedor Runs for President

添加边 \((x,y)\) 后对答案的贡献,随后 DP 算出 \(f_x\)\(x\) 子树以 \(x\) 为起点的路径最大贡献,于是对于一个节点枚举两个儿子的最大路径拼成环,再对此斜率优化。

Abnormal Permutation Pairs (hard version)

看到字典序,想到枚举 LCP,然后 DP 记录从后往前填的排列的阶数以及两个序列逆序对的差值,转移枚举两个数表示新加入的数。DP 优化:注意到转移只考虑第二维的差值于是转移变成枚举差值。

Chemistry Lab

元素之间可以随意组成,想到画到平面上,则两个元素的连边全都是可以选的点,且最终是凸包,于是 DP 这个凸包,但我们不用记录斜率因为不合法的转移都不优。

P6669 [清华集训2016] 组合数问题

考虑 Lucas 定理,相当于在 \(k\) 进制下对 \(n,m\) 拆位,对应每一位计算组合数再相乘,而最终为 \(0\) 相当于其中至少一个组合数为 \(0\),数位 DP。

[ABC240Ex] Sequence of Substrings

类似最长上升子序列的转移,但注意到一个元素超过 \(\sqrt{2n}\) 就必定不优。

CF1292C Xenon's Attack on the Gangs

给树上边分配 \([0,n-2]\) 的权值来最大化 mex 相关,这里的 mex 也可以拆贡献。

CF1016F Road Projects

将树看作从 \(1\)\(n\) 的链上挂着一些子树。

P2481 [SDOI2010] 代码拍卖会

将数位不降的数,每一个数位写成与其大小相等的 \(1\) 的个数组成的数,然后横着就变成一堆 \(111\dots111\) 相加,因为其模 \(p\) 有循环节所以好 DP 了。

posted @ 2024-09-08 14:25  include_c  阅读(80)  评论(0)    收藏  举报