CSP-S模拟4
CSP-S模拟4
逆天场,130获得rnk2
赛时
发现hzoi24A层来就意识到不对劲。
开 T1,这啥?SA?我不会啊。
打算放弃,发现退出神秘结论,观察可以使用AC自动机DP。
果断切掉吗?
分析一下发现复杂度假了,但是已经过去了近 20 分钟,于是决定不再犹豫,起码能得 70。
果断写,一遍写真。
但是写的时候突发奇想,注意到真正能用的转移数并不很多,于是直接给 son 去重。
果断写 maker,0.8s?
开心的交上去,浅证复杂度好像是卡不掉的。
开 T2,这不是直接边双缩点后树上维护并查集即可?
再一次果断写,暴怒发明tarjan求割边,先写一发暴力检验正确性,WA?
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
生气了!!!
开 T3,发现是网络流,直接写,不对,数据范围十分恶毒。
一看好像很熟悉,这不是最小割树吗?完了,我不会,跳。
开 T4,发现是神秘DP,不会,跳。
还能干啥?调 T2。
证明了 T2 做法大致是 \(O(n)\),最劣也卡不到 \(O(n \log n)\),继续调,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
狂调不止,WA!
马上拼包打暴力,并把数组开小了!
放弃了,结束了。
期望得分:\(70 + 30 + 5 + 0\)
实际得分:\(100 + 20 + 5 + 5\)
T1竟然过了?
T4 输出 2 可以获得 5 分。。。
T2 因为开小了导致狂RE不止。
挺唐的,T2 基本算想出题解做法,只是被调垃圾暴力害了,T3 该想的都想出来了,但是都不会写(
T1 前缀 (lcp)
题目大意:
给定 \(S\)
构造 \(T\) 使 \(\sum_{i=1}^{m}{LCP(S,T[i\dots m])}\) 最大
这啥啊,应该放 T1 吗?
其实仔细思考一下就会发现,题目本质就是对每个前缀都和 \(T\) 进行匹配,匹配次数就是答案。
考虑直接 AC 自动机上 DP。
设 \(dp_{i,j}\) 表示考虑到 \(T\) 的第 \(j\) 位当前在 \(i\) 节点的最大值。
转移比较显然,枚举下一位是什么:
\(dp_{i,j}=\max {dp_{son_{i,p}}}+val_i\)
其中 \(val_i\) 表示 AC 自动机上节点后缀(\(fail\))的和。
复杂度 \(O(nm玄学)\) 感觉大致在 \(O(nm\sqrt{\max a_i})\) 一下。
T2 两条 (graph)
神奇题目,考虑边双其实并不是很有前途,不过也能做。
一个显然的思路:删边改加边。
考虑每次加边后会发生什么。
由于非固定的树形结构需要使用 LCT 等逆天东西维护,所以可以建出生成树(怎么建后面提)。
建完之后发现加边本质就是对于 \(x\) 到 \(y\) 的树上路径进行全体 \(+1\)。
那么如果两点之间所有边权值都大于等于 \(2\),就说明这期间内不存在割边了。
然后把所有边权值大于 \(1\) 的边加入另一张图,用并查集维护一下,每次树上跳直接像树剖一样跳并查集内的 \(top\) 即可。
浅证一下发现基本是线性的,因为每个边至多会经过两次。
但是如果直接随便建肯定会爆炸,因为假设现在要另一些加边操作,直接覆盖到这条边,但是这条边根本不存在!
所以会使得其根本出不去却认定为合法。
那么只需要将这条树边是最早被加入的即可,使用最小生成树就好。
T3 摧毁 (destory)
不想写,口胡做法。
神奇题目,考虑最小割树。
用最小割树可以将问题转化为 \(n - 1\) 次询问最小割。
怎么维护?
注意到这个 \(C\) 一定只会被割两次,所以可以枚举这两个边。
设其分别为 \(x,y\),则可以在一个二维平面内变为 \((x,y)\)
然后稍微搞一下就发现这个点的贡献就是必须割掉两个矩阵内的边。
又发现其实询问就是都是 \(3-side\) 矩阵询问,可以使用扫描线 + 历史版本最值维护。
因为每次都是由最小割拆成两个图,所以必须在线询问,需要使用主席树维护一下。
太难写了。
T4 速速 (speed)
发现一个节点内由父亲来的所有贡献构成的决策点集的极差一定小于等于 1
所以直接维护最优决策点集,上一个线段树合并分讨即可。

浙公网安备 33010602011771号