20240927模拟赛Div2
-
单 log:
-
对于每一列都建立一颗权值线段树,在线段树上对于下标进行二分,被大毒瘤 lxl 卡了,只有和暴力同分的 \(80pts\)
-
元旦激光炮同做法,自己去看,此做法可以扩展到 \(q\) 个序列
-
-
双 log
考虑在给出时是满足每列都是单调递增的,最暴力的思路就是对于操作 \(1\) 直接从两行结尾暴力找第 \(k\) 个,复杂度 \(O(Tk)\)
对于操作 \(2\),直接进行二分查找即可,复杂度 \(O(T \log n)\)
发现主要瓶颈在于操作 \(1\),因此只能拿 \(80pts\) 很不优啊,考虑对操作 \(1\) 进行优化
如果我们每次都在操作 \(1\) 中从结尾找到一个点 \(a\) 时,直接在另一个序列中二分查找这个点对应的下标,然后以此往复似乎就会优很多
能过,复杂度 \(O(T \log^2 k)\),别问我复杂度对不对,我也不知道,我不会分析,别人告诉我是双 \(\log\) 的
我们先对边的状态进行记录,考虑一个点的子树已经确定的时候上面会关心什么
主要是关心会不会从不选变成不选,不选变成选,选变成不选,那么可以设 \(f_{x,0/1/2}\)
我们去考虑 \(f_{x,0}\) 比他早的边算出一个 \(g_{x,0/1}\),代表有没有比他早的边选,因此 \(f_{x,0}\) 就应该初始化为 \(g_{x,0}+g_{x,1}\)
考虑 \(f_{x,1}\) 仍然使用 \(g_{x,0}+g_{x,1}\) 来赋值,但是 \(g_{x,1}\) 需要清除掉
\(f_{x,2}\) 需要枚举整颗子树计算 \(g_{x,0}+g_{x,1}\)
最后的解是 \(f_{root,2}\)
模拟赛 C 题
中间的部分分直接神秘暴力都能做
这个贪心在任意状态下都是对的当且仅当一个图内任意两个联通块的交都是联通块
当存在两个联通块的交不是联通块时可以构造使贪心出错,也就是我们需要写一个点双联通分量维护即可
比较神秘的一道最优化问题
首先这个东西一看就很区间 dp,但是状态数太多了 \(f_i\) 内 \(i\) 有 \(1e9\) 个
考虑规范一下,在最优解中有的状态是选不到的,我们把所有分界线全都往前推
发现要么和某个云的左端点一样,要么是某个云的左端点加上整数倍的 \(s\)
可以发现状态本质上只有 \(n\) 类,可以列出转移方程
我们把之间距离大于 \(2s\) 的云全部删掉,我们找到没有被覆盖到的云的个数
然后我就听不懂了,离线