做题记录 25.7.23

\(\textcolor{purple}\odot\) CF1682E Unordered Swaps

当交换的两个位置在同一置换环中时,这一置换环会分裂为两个环,反之两个环会并为一个,最终状态为 \(n\) 个置换环,因此最优方式为每次交换两个在同一置换环中的位置,操作次数为 \(n-c\),其中 \(c\) 为初始置换环数量

题目给定了 \(m\) 次操作,由于保证一定存在最优解,因此 \(m=n-c\),且不存在跨越初始置换环的操作

对于一次给定的操作 \((u,v)\),在两者间连边

对于两条边 \(A,B\),显然 \(A\) 的两个端点和 \(B\) 的两个端点分别属于一个置换环

当两者不属于同一置换环时显然两者之间顺序无影响

当两者在边上相交(即执行 \(A\)\(B\) 跨越分裂出的两个环,显然满足交换律)时,显然无解,因此不会包含这种情况

当两者在边上不交且不共用顶点,显然无影响

当两者共用顶点,设共用点为 \(u\)\(A=(u,a),B=(u,b)\),设在环上的顺序为 \(u\to a\to b\),若先操作 \(B\) 则拆为两个环且 \((u,a)\) 跨越两个环,若操作 \(A\) 则合法,因此此时 \(A\) 必须在 \(B\) 之前操作

枚举每个点,将以这个点为一端的所有边按环上的顺序排序,然后按顺序得到限制,根据限制拓扑排序即可得到答案

时间复杂度 \(O(n\log n)\),瓶颈在于排序

代码

参考

\(\textcolor{purple}\odot\) CF1681E Labyrinth Adventures

\(f_{i,0/1,0/1}\) 表示第 \(i\) 层的第 \(0/1\) 个点到第 \(i+1\) 层的第 \(0/1\) 个点的距离,倍增维护矩阵的区间积(\((\min,+)\) 矩乘),容易做到 \(O(n\log n+q\log n)\),用线段树可以做到 \(O(n+q\log n)\),用猫树可以做到 \(O(n\log n+q)\)

代码

\(\textcolor{purple}\odot\) CF1680F Lenient Vertex Cover

原图为二分图时显然合法,构造方案是容易的

若存在一条边 \((u,v)\),使得在图中将 \(u,v\) 缩为一点后变为二分图,选择 \((u,v)\) 以及对缩点后的图黑白染色后与 \(u,v\) 同色的点,显然合法

其他情况无解

第二种情况容易树上差分解决

时间复杂度 \(O(\sum (n+m))\)

代码

\(\textcolor{blue}\odot\) CF1680D Dog Walking

\(G:(\mathbb N^+_{\le n})^2\mapsto 2^{\mathbb Z}\quad G(l,r)=[s-kc,s+kc]\mid s=\sum_{i=l}^r a_i,c=\sum_{i=l}^r [a_i=0]\)

定义 \(-[a,b]=[-b,-a]\)\([a,b]+[c,d]=[a+c,b+d]\)

\(0\notin G(1,n)\) 时无解

否则枚举最小值的位置 \(mn\) 和最大值的位置 \(mx\)(假定 \(\le mn\le mx\le n\)),设最小值为 \(x\),最大值为 \(y\),则有

\[\begin{cases} x\in G(1,mn)\\ y-x\in G(mn+1,mx)\\ -y\in G(mx+1,n)\\ \end{cases} \]

可得 \(y-x\in S=(G(mn+1,mx)\cap -(G(1,mn)+G(mx+1,n)))\)

\(S\ne\mathbb\emptyset\) 时,这种情况下答案为 \(1+\sup S\),所有情况取最大即为答案

总时间复杂度 \(O(n^2)\)

代码

\(\textcolor{purple}\odot\) CF1679F Formalism for Formalism

考虑在每个等价类中字典序最小的数上统计

假设某一位填了 \(x\),高位都已经确定,下一位要填 \(k\),要使数字的字典序无法变小

\(sw_{u,v}\) 表示是否不存在二元组 \((u,v)\)

\(sw_{x,k}\),则 \(k\) 可以填

\(\lnot sw_{x,k}\)\(k<x\),则不能填

其他情况下是否可填与上一位相同

\(f_{i,j}\) 表示填了前 \(i\) 位,下一位可以填的状态为 \(j\) 的方案数

\(w=10\),容易做到 \(O(n2^ww)\)

代码

参考

posted @ 2025-07-24 06:58  Hstry  阅读(3)  评论(0)    收藏  举报