4 月 09 日做题记录

Indecisive Taxi Fee

这题中图是无向图的性质并不关键。

删边最短路:
\(1\) 号点为源点,任取一棵最短路树 \(T\)。若 \((u,v)\notin T\) 或者 \(n\) 不在 \((u,v)\) 的子树内部,则不会对最短路造成任何影响。否则树被划分为两个区域 \(S,T\setminus S\)。对于每一条跨越两个区域的非树边,可以用来更新答案。线段树合并优化。

[POI2010] MOS-Bridges

假定图弱连通。

首先有解存在必要条件,把有向边视为无向边,图必须存在欧拉回路。

先二分答案。现在有一些边已经确定了方向,一些边没有方向。建图:对于 \(ind_u<oud_u\),从 \(S\)\(u\) 连边,容量为 \(oud_u-ind_u\);否则从 \(u\)\(T\) 连边,容量为 \(ind_u-oud_u\)。对于一条无向边 \((u,v)\),连两条边 \(u\to v\),容量为 \(1\)\(v\to u\),容量为 \(1\)。有解当且仅当可以满流。构造是这样的:显然对于一条无向边,如果两边只有一边有流量,方向就已经确定了;否则两边都有流量和都没有流量是一样的,连无向边。由于第一个必要条件满足,此时度数平衡,分别跑一个有向图和一个无向图的欧拉回路接起来即可。只需保证一个点的出边中无向边都排在有向边之后,便可以用一个 DFS 实现。

James and the Chase

一个点合法等价于以其为根的生成树的形态唯一。这等价于生成树上不存在前向边和横插边。随机化找到任一合法点,考虑推出所有的合法点。

观察到,如果 \(u\) 的子树内存在超过两条出子树边,则点 \(u\) 一定不合法。否则,设 \(low_u\) 表示 \(u\) 子树内返祖边指向的最浅的点,点 \(u\) 合法就可以转化为 \(low_u\) 合法。

01 Balanced

原先考虑的是按照字典序贪心,再考虑充要,这个思路不太可行。

看题解得知,前缀和之后实质上是一些变量和不等式的限制,可以写成差分约束的形式。

\(x_u\le x_v+w\),连边 \((u,v,w)\)

最短路找到一组字典序最大的解。得到字典序最小的解只需要反转 0/1;相当于 \(-x_u\ge -x_v-w\) 然后最长路。

边带负权,spfa 是 \(O(nm)\) 的复杂度,亡。

看题解,解决的办法是更改变量的定义和约束不等式。

注意到唯一的负权边在于处理 \([l,r]\) 的限制时,我们要从 \(r\)\(l-1\) 连权值为 \(-(r-l+1)/2\) 的边。改设 \(x_i\) 表示把 \(0\) 看作 \(-1\) 之后的前缀和,则只需要满足 \(x_{l-1}=x_r\)。这样就不会存在负权边的干扰。由于要求字典序最小解,可以证明不会出现 \(x_i=x_{i+1}\) 的情况。

Flip and Reverse

也就是求 \(s\) 所生成的等价类里面字典序最小的代表元。

\(f(s)\) 表示翻转再反转 \(s\) 得到的字符串。\(f(f(s))=s\)

如何判定 \(s\) 可不可以生成 \(t\)

......

画出折线图后发现操作本质上是将前缀和序列翻转。

\(x,s_l,...,s_r,x\to x,s_r,...,s_l,x\)

贪心找最小的 \(x,...,y,x\) 翻转。如果有多个就选最前的。交上去对了。

剩下的事情无非就是上数据结构加速这一过程:

翻转一段前缀;查询最小的 \((x-1,x)\) 出现的位置。

由于前缀和是连续的,先找到第一个 \(\le x-1\) 的位置,再找后面第一个 \(\ge x\) 的位置。区间翻转用平衡树维护。

posted @ 2025-04-09 14:36  Network_Error  阅读(19)  评论(0)    收藏  举报