25.10.22

QOJ9903

“只经过某些点”考虑 Floyd,这题就直接拿分治把外面的拉进来跑。

CF2154F2

考虑给出排列的逆排列,这里面最多一对逆序对。

如果已确定的部分没有逆序对,那就能枚举(可能的)逆序对在哪两个数间,然后需要对前后的限制(\(a_i\) 前的数要有 \(b_i\) 个)做一个归并。

我们要处理的限制大概是若干“在 \(l\sim r\) 间填入 \(x\sim y\) 范围内的数”的问题。

其余的每段分配一个 \(\binom{y-x+1}{r-l+1}\) 的组合数,而中间这段的可以随意放,处理一下前后缀可以做到线性。

如果有一处逆序对,那么我们就可以定在这一段了,但是还需定下在这段内的哪个位置。

现在需要枚举一下这个分割,假设分了 \(x\) 到后半段,那么前面一些限制 \(a_i\) 前要有 \(b_i\) 个,后面一些限制 \(a_i+x\) 前要有 \(b_i\) 个这样的,这就不是直接归并然后取段了。

首先可以把那些差值是定值的位置先弄了,这些段的贡献是常数。

但有些地方归并的时候就会出问题,那就不好了,我们貌似只能枚举这个 \(x\) 来确定归并的状态。

但是可以发现如果有 \(k\)\(x\) 相关的区间,那么最短区间长度不能超过 \(n/k\),而 \(x\) 不能超过这个长度,于是就 \(k\times n/k=n\),所以能过!

P14184

无向图删边最短路好像就是建两棵最短路树随便搞搞。

有向无权图删边最短路有一个非确定性算法,首先根分,考虑被支出去的 \(l\le B\) 的路径。

这部分就在原最短路上隔 \(B\) 个取一次点,把这些点带上权(到起点距离)然后跑长度不超过 \(B\) 的最短路。

然后对于大的部分,随机选一些点在正反图上跑最短路到原路径上,然后更新之。

正确性我不会,反正后面那个跑个 \(k\ln n\frac{n}{B}\) 次可以做到好像是 \(1-n^{1-k}\) 的正确率。

可以去搜 EI 的文章进行阅读,另外有权的是图灵奖。

CF2159D2

首先容易整出一些暴力地皮,但是发现不能决策单调性,然后考虑别的性质。

发现 \(f\) 不超过 \(2\lg V\) 啊,然后手玩一下发现能确定性地给出这样地方案,于是直接记录 \(f\) 值对应的最左端点。

然后还是不太能过,考虑一下发现我们这个 \(cost\) 也不超过 \(3\),因为可以把 \(cost=x\) 拆成 \(cost=x/2\)\(cost=2\),于是可以数据结构优化之。

算答案就是在每个右端点上把这些根据 \(f\) 划分的段分别求和一下。

P13997

首先发现拆成链计算复杂性不会增加,果断拆。

对于一个询问需要处理的形式变成了 \(a_i+x\) 的异或和,尝试逐位确定。

讨论一下发现 \(a_i+x\) 在第 \(k\) 位上为 \(1\)\(a_i\) 是常数个值域区间,于是直接用树状数组维护之,查询奇偶性即可。

详细的搜题解。

P14062

对于每个 \(i\) 求出 \(\le i\)\(>i\) 分开的操作次数,我们问的是最大的次数。

这样可以视作 01 串,而一次操作就是交换最左侧的 1 和最右侧的 0,而最后一下操作就是交换 \(i\) 左侧第一个 1 和 右侧第一个 0。

这个东西好算,而且发现改变 \(i\) 只会有一位翻转,链表可以维护。

问题是不知道插入位置,可以直接平衡树,也可以先倒着删一遍把插入位置存下来。

posted @ 2025-10-31 09:27  LQ636721  阅读(11)  评论(0)    收藏  举报