Loading

航电多校 2024 笔记(更新至 09)

01

写点赛时不会的。难绷场,可能因为是 01 所以比较水,就只有最后一个能放省选模拟 T1,以及一堆原神题。

T5 hdu7437 博弈

赛时发现了对于字符集大小为偶数的情况,我们只用算二者字符串相等的情况,不相等的话交换的两种情况构成双射,因此概率相等,字符串相等的情况数组合数随便算算就行。

对于奇数,其实你只用考虑前面 \(\frac{n-1}{2}\) 个字符是否相同,然后就跟上面一样,而且最后一个字符如果相同也只有一种取值,也就是字符数量为奇数的那种。

T6 hdu7438 序列立方

这种次方和的常见转化方法是计数可重多元组,这里怎么算呢?赛时想的是在第一个不同的位置算,但是很难,其实直接记三个维度 dp 然后前缀和优化就做完了,这里前缀和是三维了,可以分别转移。

T7 hdu7439 三元环

突然想起来我好像在哪里见过类似的容斥思路,好像是在某个模拟赛里,总之难绷,容斥,找不是三元环的点对,有且仅有一个点度数为 2,在这里算,变成数点。

T9 hdu7441 数位的关系

不想看了,数位 dp 题。

T10 hdu7442 众数

绷,你发现这是随机的,所以答案不会离最大值太远,如果离很远就说明所有值分布都远离中心,概率很低,然后相当于拉若干个数出来算一算比一比,所有需要拉出来的区间很少,具体实现可以考虑区间 \(k\) 大+超级钢琴,每次把一个最大值最大的区间拿出来算贡献再分裂,如果最大值不算就不管了。

T11 hdu7443 树上的 mex

赛时想的淀粉质,但是其实可以从每种颜色身上考虑,一条链如果要包含这种颜色得满足什么条件,把链看作端点二元组 \((x,y)\),不难发现每种颜色其实划定了有常数倍该颜色点数的 dfs 序上的矩形不能取到点,二分扫描线就做完了,好像很难写。

02

赛时太困了,写了两个半小时去休息了,还是要尊重睡觉。

T2 hdu7446 梦中的地牢战斗

一个转化是由于我们不能回血,而且这不是交互题可以预知未来,因此我们可以直接把扣血当作付钱,预知我们提前会扣多少血,在最开始买相应的血量。

注意到数据范围其实很小,也许我们可以做一点暴力的操作,注意到所有本质不同的状态只有 \(nm 2^k\) 种,即把打怪的情况和目前所处的位置压成一个状态,只有在这个状态下赚到最多钱的情况才会被我们考虑到,然后就是朴素地转移,枚举移动到哪,由于边权不固定而且有负的,因此我们得 spfa,图的形态比较特殊,所以不容易被卡掉,可以通过。

T4 hdu7448 a*b problem

求所有乘积小于 \(n\) 的方案数比较困难,转成设 \(f(n)\) 为等于 \(n\) 的方案数然后求前缀和,不难发现 \(n\) 的每个质因子怎么排是独立的,因此 \(f\) 是积性函数,\(f(p)\) 是简单的,\(f(p^c)\) 只需背包一下,枚举每个位置分配多少以及是否分配过 0,由于 \(c\) 很少且 \(f(p^c)\)\(p\) 独立,我们完全可以全求出来,然后上 min25 就做完了。

T5 hdu7449 小塔的养成游戏之梦

菊花图,先考虑只有两个变量的情况,不难发现这相当于给定若干个半平面,然后若点落在这里就由对应贡献,做扫描线,维护当前能取到的最大值,你发现最大值变化只可能在半平面对应的直线出现交点时,所以变化次数很有限,求出这个分段函数。

考虑菊花图,就是把根变量看作变量然后归并一下,然后求分段函数极值,感觉不好写。

T8 hdu7452 成长,生命,幸福

考虑只进行一次成长后的直径,先不把每个结点展开,考察在原树上直径的形态,不难发现若是直径经过一个节点,我们总能让这条直径经过所有生长后出现的点,因为一条链对于一个点一进一出,把进出的两个点拉出来,只有他俩不连,其它都连就构造完成了。然后就是求带权直径。

T9 hdu 7453 强攻计策

垃圾分讨数据结构题,又难写又难编细节,但是就是没啥思维难度?

用数据结构维护当前速度与目标速度的差,把操作看成后缀加减,把当前速度和目标速度看作折线,然后一次操作按题解的话说造成的影响就是“速度变化的位置在⽬标速度增加后,第⼀个匀速或减速的位置,如果是减速则要满⾜减速前的速度刚好与⽬标速度差 1。”,依照这个直接找出第一个这样的位置然后用数据结构维护。

T12 hdu7456 图计算

暴力建出每个图,上并查集,两个点每个图都联通等价于两个点每个图里的并查集根都相同,给每张图给个点一个随即哈希,然后一个点的哈希是它每张图里根哈希的异或和,你只要算每个异或和有多少个点对,这个每次直接合并的时候启发式合并处理一下就行。

03

后悔没认真打了,很好的场。

T2 hdu7458 旅行

很有意思的题,赛时还是几个字符的问题没调出来,这个题跟今年 WC T3,CTS T2 很像。

这种路径覆盖题很套路地进行子树 dp,很套路地维护伸出去子树地链的最优值和信息,在这题里,我们只关心每种颜色子树内加上伸出去的这个端点权最大时多少,其他我们不管。

那你就考虑维护这个,直接用一个 map 存每种颜色对应信息,这比线段树合并更好写,然后合并子树的时候启发式合并,并做接起来两条“半链”的转移,最后直接考虑根节点怎么办就做完了。

T3 hdu7459 游走

前两个小时过的人比 T2 还少,我还以为我做法错了,后面摆烂就没写,就是先不考虑 \(p_i=1\) 的情况,其他的直接 set 维护相邻数对判断合不合法,合法的话答案就是由 \(p_i=1\) 奇偶性不同的点和\(p_i\neq 1\) 的第一个点共同约束。

T4 hdu7460 游戏

首先考虑由于每次选择的样本空间都相同,故每个 pair 都是完全等价的,而每个 pair 操作之后的每个差值变化量的概率也都一样,换句话说,如果两个 pair 差值一样那最后相同的概率也一样。

先差卷积一次求出本质不同的差值及每种的个数,然后就是算每种差值变化量的概率,写出生成函数就有差增加 \(k\) 的概率为 \([x^k](p_1+\frac{p_2}{x}+p_3x)^t\),每个 \(p\) 都是固定且好求的常数。

然后就变成求上面多项式的每一项,先全体乘 \(x\) 变成算 \([x^{k+t}] (p_1x+p_2+p_3x^2)^t\),这是微分有限的,可以整式递推,设 \(G\) 为上式,求导就有:

\[G'= t(p_1x+p_2+p_3x^2)^{t-1}(p_1+2p_3x) \]

\[G'(p_1x+p_2+p_3x^2)= tG(p_1+2p_3x) \]

提取 \(x^n\) 项系数:

\[(n+1)p_2g_n+np_1g_{n-1}+(n-1)p_3g_{n-2}=tp_1g_n+2tp_3g_{n-1} \]

然后就可以递推了!

T5 hdu7461 数论

感觉关键在于容斥和对 gcd 分类 dp,天天说正难则反,但什么时候需要反,可能不是每次检查你有什么 trick 没用,而是真正感受到这个“难”?

考虑怎么算包含 \(a_i\) 的区间集合,有两种思路:直接枚举 gcd 算或者容斥一下,前者需要钦定你的 gcd 和可能取到这个 gcd 的左右端点集合,以及算一段连续的前缀和后缀 gcd 为定值的区间集合方案数,很难做,正难则反,这时候我们只要求出一个前缀和一个后缀就好了,变得好做了一些。

但是硬做还是很难的,观察到在 dp 的时候我们其实浪费掉了很多东西,当你在转移以 \(r\) 为右端点的区间时,其实只有 \(\log\) 种数能被转移到,于是只考虑转移这 \(\log\) 种数,具体实现你可以先存一下所有 \(r\) 和对应的 \(l\) 区间及 gcd,然后对于每种来一个动态开点线段树优化 dp。

T6 hdu7462 字符串

连我这种只看过一眼的人都认出来是基本字串结构?还是早点埋了吧,看看正经做法,基本字串结构解法可能会在未来的某一天补上。

口糊了一个做法,应该大差不差(是不是说过这话),考虑 \(s[l,r]\) 对应的 SAM 节点,我们看作一个纵坐标为 \(r\),横坐标为 \(l\) 对应区间的长条有 \(endpos\) 个数的权值,放到二维平面上,每次答案就是求矩形内或者矩形外等于某数的方格个数,扫描线即可。

T9 hdu7465 圣芙蕾雅

神秘图论,像是论文题,不看。

T10 hdu7466 绘世之卷

根号分治

整除性问题先想根号分治,但是你尝试应用这个结论时会发现怎么都要在插入过程中应用这个性质,不如先考虑插入,删除可以线段树分治。

考虑作为被除数算贡献,只有根号种商,直接找每种余数最小的,这个可以并查集。

考虑作为除数,你发现这时候根号分治就很好了,大于根号的话商也很少,直接算,小于根号的话余数很少,相当于要找模 \(x\)\(y\) 的最小数,然后这个是可以预处理的,就做完了,时间复杂度 \(O(n\sqrt n \log n)\)

更小常数的处理

人类智慧,但是不用应该也可以过。

前驱后继用并查集做常数有点大,考虑不要,同样根号分治,插入的时候集合大小很小完全可以直接暴力,集合大小很大时可以感知到答案不是很大,你想要更新的话时比较困难的,通过分析可以得到这个答案是根号级别的,这可以由如果两个数相差不超过根号那商加上余数也是根号的加上鸽笼得到。

然后直接枚举余数,如果是被除数,就是求最小因子,这可以预处理,由于每个数最多插 \(\log\) 次,这个预处理就是两只 \(\log\) 的;如果是除数,直接枚举倍数,然后找最近的保证余数最小,这个跟上面的分析一样,但是这里后继可以直接暴力,因为你的余数不会太多,每个数只要预处理根号个后继就好了,时间复杂度相同,但是后继换成并查集就是三只 \(\log\)

04

Claris 场,太困难了。

T2 hdu7470 黑白边游戏

首先考虑怎么得到最终权值,博弈论的一个常用方法是倒推,设 \(f_{i,j}\) 表示第 \(i\) 轮,图状态 \(j\) 时两人分数之差,每次转移都是固定的因为每个人一定选择对自己最有利的状态,且一开始状态是固定的。

这样 dp 的话状态太多了,会有 \(2^mn\) 种状态,考虑优化,注意到图标不标号无所谓,只考虑无标号图的话数量不会太多,考虑找出所有这样的图及其加边的转移,直接记忆化搜索,但是每次搜到一个图不太好记录状态,因此我们得找一个类似字符串最小表示法这样的映射。

题解给的映射是把节点哈希,每个节点记录一个二元组 \((deg,S)\) 表示度数和相邻节点,相邻节点哈希掉,这个可以异或哈希,然后再排个序,表示节点顺序,以这个顺序记录邻接矩阵,然后状压成一个数,二元组重复怎么办?爆搜所有排列找到邻接矩阵字典序最小的那种,时间复杂度能过。

T3 hdu7471 最优 k 子段

感觉思维有点被桎梏住了,首先肯定是二分答案,然后判定的时候你并不需要 dp,或者说就算 dp 这也是个可行性 dp,而且完全可以贪心地选一个左端点最小的合法区间。

考虑怎样每次选一个最小的合法区间,从左往右扫,看当前的数作为右端点可不可以,具体来说就是从小往大找左端点,你先转化成前缀和相减然后用 set 维护当前所有能选的左端点,然后从小往大看权值合不合法和区间长度是不是质数。

这步复杂度可能很高,但是你考虑数据随机,所以你大概 \(\log\) 次就能找到是质数的,只要判断这个是质数的最小值是否合法即可。

T4 hdu7472 分组

先暴力分成两半,再考虑把这两半分成四组,暴力的过程中记录两边所有可行的子集异或和,这个直接 01 背包,接着你发现有四组以及最大值减最小值若干限制,我们得再钦定点东西。

那就枚举其中一边的分组状况,注意这里直接枚举权值,依靠我们前面做的 01 背包,这样可以减小枚举量,然后这时候我们要考虑对面的最大和最小是否比这边的最大最小大,不妨假设我们这边的最大值比较小,对应的情况可以再次枚举对边的进行计算,这时候我们就只要知道对面的虽有划分方案中较大的一方对应的小的部分的最大值,这个可以直接预处理。可能直接看标程会更好理解。

T6 hdu7474 延迟操控

问题的关键在于你如何处理“延迟”这个行为,因为延迟让你貌似很不好进行操作,但是换个角度考虑,两边的状态几乎是独立的,我们真的需要考虑延迟吗?

其实确实是不需要的,我们可以考虑问题等价于两边一直同时走,最后只有自己走一段,这样就可以直接暴力 dp 了,但是注意不能直接记录两个坐标,由于两个坐标的曼哈顿距离差不超过 5,记录这个差值即可。

T7 hdu7475 序列更新

不懂咋有一车外星人过了这个题,又看了下时限很短,是不是都是小优化暴力跑过去的?赛时光往期望操作次数线性对数然后往这边优化的方向想了,完全没想根号分治,而且可能概率算的还有问题。

05

T1 hdu7481 数表(二)

神秘转化,考虑总共有奇数个数,对于一个异或和等于 \(x\) 的局面,我们把数全部异或上 \(y\),就能转化到任意一种异或和的局面,且这是有唯一对应的,因此我们不用考虑条件三,只要考虑前面两个。

然后就是比较平凡的容斥,钦定某若干列一定不满足限制然后算一算就行。

对于 bouns,我有一点点没有验证过的思路,考虑把列的限制容斥掉,类似做集合不相等容斥,钦定若干列必定相同,然后就变成了算从值域里选若干不相等数异或和为 0 的方案数,再钦定有序(最后除以 \(n!\))容斥掉不相同,就是个数位 dp,但是这样可能要 \(\widetilde{O}(n^2)\) 甚至更高的复杂度。

T4 hdu7484 树论(一)

这个题不用考虑一些树上启发式的算法,注意到数对数量少之后就可以直接转化成子树内数点,但是查资料的时候发现了一些很有意思的求和上界估计。

估计满足 \(\text{lcm}(i,j) \le n\)\((i,j)\) 个数。

\[\sum_i^n \sum_j^n [\frac {ij}{\gcd(i,j)} \le n]=\sum_d^n \sum_i^{\frac{n}{d}} \sum_j^{\frac{n}{d}}[\gcd(i,j)=1] [ijd\le n] \]

莫反掉,把小于等于直接的判断换成除法

\[\leq n \sum_{k=1}^{n} \frac{\mu(k)}{k^{2}} \sum_{d=1}^{n} \frac{1}{d} \sum_{i=1}^{n / k d} \frac{1}{i} \leq n \log ^{2} n \cdot \sum_{d=1}^{n} \frac{\mu(k)}{k^{2}}=O\left(n \log ^{2} n\right) \]

T5 hdu7485 树论(二)

感觉题解的思路和实现很厉害。

考虑枚举 \(\gcd\),那能被这次更新到的边一定是在虚树上的边,建虚树之后并查集合并更新过的边,然后跳着更新,但是注意到不建虚树,任意顺序直接遍历也是可以的,每条边总会被至少遍历到一次。

T11 hdu7491 开关灯

列出方程组展开余子式算矩阵的秩,或者打表。

T12 hdu7492 串串

基本子串结构,有空再看。

T13 hdu7493 飞行棋

很妙啊!我自己推了很多式子也没推出来,考虑除了最后一个点其他的本质相同,看作同一个,然后就是简单的概率计算。

06

T2 hdu7495 造花

考虑长度为 3 的链必须至少删一个,找到之后直接暴力判断,没有的话删啥都合法。

T6 hdu7499 解方程

格科技,有空补。

T7 hdu7500 树上 MEX 问题

考虑算每个 mex 的方案,是若干父亲在必选点的虚树上而自己不在的点的子树方案乘积,维护一个点的子树什么时候有贡献,这是个区间,可以 dfs 随便做做。

T8 hdu7501 树形 DNA

把树看作 trie,选若干个完全张成这个 trie 的字符串,能删成等价于能表示这所有串,然后直接考虑判断每个点,从下到上匹配字符串即可。

T9 hdu7502 数字加减

维护每个时刻的合法取值线段,操作只有增减合并和删除,应该是可以直接做的,细节可能比较多。

T10 hdu7503 Rikka 与子集 IV

很厉害的 dp,考虑设成生成函数,然后有朴素 dp,每次转移都要算卷积,这样很不优。

考虑不优在哪,主要是如果你先转移了很重的儿子,后面所有卷积的复杂度都要受影响,因此考虑 ddp 优化一下,对每条重链分别转移,每个点对复杂度的贡献只有在重链顶和跳轻重链的时候,因此是对的。

07

第一次认真打,单人切了 7 个,单人还是太累了,很难想象 Jiangly 单挑的时候是怎么写出那么多代码的。

T1 hdu7505 纠缠点对

细节题,先转化一下限制方便处理,不难发现如果两条链有交,一定有一条链的 lca 在另一条链上,只有一棵树是好做的,直接树剖一下算然后再减去 lca 重合的情况即可。

两棵树呢?我们找出这条路径覆盖到的所有点,然后在第二棵树上标记 lca,再用上述办法处理即可,于是关键变成找出所有点并进行标记,这个直接对每个点维护一个到根路径上所有存在的 lca 的点对在第二棵树上的标记,书上差分一下就能得到当前点的答案。

当然你也可以在第二棵树上差分一下变成区间修改单点查减小复杂度,但是总体做法还是细节很多的,要排掉重复的情况。

T2 hdu7506 生产机器

不错的题,赛时切了,这种题一般的思路就是给一种排列找一个关于构造方案之间的双射,奇数这个构造方案,在这题里我们直接定义为强制每一段至少有一种颜色选满,不难发现这是可行的。

然后就是 dp,dp 过程中的系数可以推推式子优化,细节较多。

T3 hdu7507 自动人偶

才发现好像做过类似的 P5404,匹配问题先建出 kmp 自动机,一个性质是如果你走完一个串走到 \(u\),再走一遍也还是到 \(u\),这个不难证明,于是这个路径就没啥大变化,随便 dp 一下就做完了。

T6 hdu7510 怯战蜥蜴Ⅱ

枚举胜利场数,枚举预测出来有多少个人实力比他小,枚举在这些预测的里面有多少真的比他小,然后算一下,答案式子有一部分可以预处理,其他的直接拆开卷积。

T12 hdu7516 华丽牧场

是不是抄袭 CF1975I 的创意。

你先别急。

08

写赛时通过小于 100 的,还不错的场。

T1 hdu7517 cats 的快乐 CF 刷题

把每个题看作一个点,先忽略在原点的题,如果你做过 abc366f 就会发现不考虑双端队列的限制的话这个题也可以用类似的方法证明先做夹角小的题目优,这个直接邻项交换算贡献就能证明。

考虑双端队列的限制,枚举分界点变成两个栈,你会发现如果一个夹角大的在一个夹角小的前面,这两个一定连续做,不然也可以考虑中间的权值然后证明,接着直接合并这两个,然后两边变成了单调的,这是 \(O(n^2)\) 的。

考虑进一步优化,不难发现每个栈出现过的本质不同的题目数量是 \(O(n)\) 的,这个的证明类似单调栈,然后把所有题目拿出来排序,每次有一个时间上的区间有这个题目,直接线段树上区间修改即可。

T2 hdu7518 cats 的随机原神

非常好的题!但是这个赛时怎么过了 44 个?外星人有点多了吧?

要求的东西一看就很像 \(E(\min\{X\})\) 这样的形式,尝试转化到这边后用 min-max 容斥,直接设出随机变量你会发现样本空间不一样,不妨设 \(X_i\) 表示所有神之眼都选完之后,第 \(i\) 种最后一次选时一共选了多少个,这样所有的样本空间就相同了。

然后施 min-max 容斥,可以得到答案为:

\[E(\min \{X_i\})=\sum_{T\subset S,T\neq \emptyset}(-1)^{|T|+1} E(\max \{ X_i\}) \]

然后考虑计算 \(E(\max \{X_i\})\),把在 \(T\) 和不在 \(T\) 里面的划分成两个集合,这个期望相当于两边随便排列然后最后一个 \(T\) 里面的数的编号,反过来考虑就是 \(T\) 里面的数前面有多少个不在 \(T\) 里面的加深本身的,这个概率就是放若干个区间没放到最后一个区间,加上大小相同的 \(T\) 时本质相同的这一性质,我们就有如下式子:

\[\begin{aligned} Ans&=\sum_{i=1}^n(-1)^{i+1} \binom{n}{i} (\frac{mi}{mi+1}m(n-i)+mi)\\ &=(mn+1)\sum_{i=1}^n(-1)^{i+1} \binom{n}{i} \frac{mi}{mi+1} \end{aligned}\]

接下来一步有好几种转化方式,解法都来自 u 群群友,这里拜谢一下。一种比较简单的是你注意到右边的和式实际上是那个分式的 \(n\) 阶差分,也就是设 \(a_{0,i}=\frac{mi}{mi+1}\),然后 \(a_{i,j}=a_{i-1,j}-a_{i-1,j+1}\),这个差分怎么算呢?简单推一推 \(a\) 找找规律就发现答案是 \(\frac{m^n n!}{\prod_{i=1}^n mi+1}\)

还有一种方法是把和式转化成一个 beta 函数然后广义二项式定理展开,这个可能需要有比较敏锐的观察力和对 beta 函数比较熟悉,过程如下:

\[\begin{aligned} \text{RHS} &=-\sum_{i=0}^{n}(-1)^{i}\binom{n}{i} \frac{m i}{m i+1} \\ &=\sum_{i=0}^{n}(-1)^{i}\binom{n}{i} \frac{1}{m i+1}-[n=0] \\ &=\int_{0}^{1}\left(1-x^{m}\right)^{n} d x-[n=0] \\ &=\frac{1}{m} \mathrm{~B}\left(\frac{1}{m}, n+1\right)-[n=0] \\ &=\frac{1}{\binom{n+\frac{1}{m}}{n}-[n=0]} \\ &=\frac{n!}{\prod_{i=0}^{n}\left(\frac{1}{m}+i\right)}-[n=0] \\ &=\frac{m^{n} n!}{\prod_{i=0}^{n}(m i+1)} -[n=0] \end{aligned} \]

总之转化完就是 dirty work 了,有一个方法是提出来分母的 \(m\) 然后注意到这个东西可以直接快速阶乘做,就多点求值做一下,或者你直接对下面的式子类似地分块再分治 NTT 一下求值也是可以的。

T3 hdu7519 cats 的飞机坠毁

关键在于如果你把左飞机看作作括号,右飞机看作右括号,匹配的一定会撞,然后考虑 dp,直接匹配你无法知道最大的括号对,因此考虑钦定括号对,每次加入一个没有被包含的极大括号对或者加入一些没有匹配上的,极大括号对的概率再来一个 dp 算一下。

T9 hdu7525 cats 的凸包计算

枚举可能出现在凸包上的边,计算可能的出现概率和对整体的贡献,概率就是所有其他点都在这条边上面或下面,也就是每个点有个取值,直接算即可。

T11 hdu7527 cats 的集合 2

这种异或题的思路都是本质相同的,要么拆位算要么分成若干个整区间,这个题是后者,两个整区间的异或卷积是简单的,于是你把每个数拆成 \(\log\) 个区间,然后前缀和优化一下异或卷积就做完了。

T10 hdu7526 cats 的集合 1

首先考虑如果没有 2,3 操作也必须用 trie,所以这整个东西肯定也是在 trie 上做的,不难发现那两个操作其实就是子树合并,启发式合并即可,可以设计个势能函数表示结点数来算复杂度。

09

T1 hdu7529 树异或价值

先拆位,然后考虑独立贡献,不然带着一个 lca 不太好分析权值,考虑把 \(dep(i,j)\) 拆成所有 \(i\)\(j\) 的公共祖先都有 1 的贡献,然后就变成了对于每个点算子树内的所有权值异或和。

那如何最大化这个东西呢,由基本不等式可知最大值取在字数内 0 和 1 尽量接近的情况,对这个方案 dp 就做完了。

T8 hdu7536 最佳选手

先考虑对于一个选手算答案,有这个选手参加的比赛肯定分全部给他最好,没有他参赛呢?考虑这时候我们已经知道了这个选手的最终权值,如果能调整使得一场比赛的两个人都低于这个权值,那这两个人是无用的;如果只能能调整使得权较小的人低于最终权值,那这个人也没用。

否则如果两个人都能被调整使得低于,但是只有一个人可以做到,我们考虑把所有这样的关系拿出来,图论建模就很自然地出来了,对这样的两人连边,如果存在树,则无解,否则可以短边使其为基环树,一定有解,这样做是复杂度是平方的。

怎么优化呢?你发现一条边随着我们钦定的人最终权值变大,肯定会存在从没贡献到只对一个点有贡献到可能都有到一定都有这样的变化,离线排序权值,然后线段树分治就可以做两个 \(\log\),时光倒流,把自环变成加权就可以做到一个 \(\log\)

T9 hdu7537 长期素食

看 MyGo 看的。

只有前三层最优凸包可能有贡献,拿出来 dp 即可。

T10 hdu7538 收集签名

都这年头了还有人玩荒野乱斗啊,感觉是很厉害的题,不知道要怎么想到直接对着这个路径 dp。考虑你每次操作一定是走到叶子,不然还要再走到对应子树一次,不如不操作,尝试直接对着这个 dp,设 \(f_{x,s}\) 表示目前在 \(x\),有 \(s\) 个起点或者终点没匹配,每次对着子树转移,如果闪现次数不够就说明还要进到子树里去,对应贡献是好算的。

T11 hdu7539 地牢谜题:更高还是更低

直接预处理左端点的最远右端点然后倍增,怎么只过了 17 个?比神秘 min-max 容斥过得都少?

posted @ 2024-07-19 22:49  eastcloud  阅读(979)  评论(3编辑  收藏  举报