P14450 一个比较松的上界证明

沿用原题面中 \(f(S)\) 的定义。

以 \(1\) 为根建出 DFS 生成树,显然只有 \(m-n+1\) 条非树边,定义所有非树边指向的点构成集合 \(L\)。定义 \(F(u)\) 表示 \(u\) 能抵达的所有点构成的集合。

定义一次对集合 \(T\) 的操作为:找出 \(u,v\in T\) 并且在原图上 \(u\) 能抵达 \(v\),然后将 \(v\) 从 \(T\) 中删除。

定义 \(g(T)\) 表示对集合 \(T\) 不断做操作直至不能做所得的集合。容易发现,\(g(T)\) 就是 \(T\) 中满足「不能被 \(T\) 中其他节点抵达」的点构成的集合。同时我们可以发现进行操作的顺序不影响 \(g(T)\) 最终的结果。

下面证明 \(|g(f(S))|>1\implies g(f(S))\subseteq L\)。

反证:假设存在 \(x\notin L\),\(x\in g(f(S))\),并且存在 \(y\ne x\),\(y\in g(f(S))\)。显然应该有任意 \(w\in S\) 都满足 \(w\) 可以抵达 \(x,y\),又由于 \(x\notin L\),所有能够抵达 \(x\) 的 \(w\),要么 \(w=x\),要么 \(w\) 可以抵达 \(x\) 在 DFS 树上的父亲 \(fa_x\)。

  • 假若 \(w=x\),则因为 \(w\in S\),所以 \(w\) 可以抵达 \(g(f(S))\) 中所有点,也就是 \(x\) 可以抵达 \(g(f(S))\) 中所有点,那么 \(x\) 就能抵达 \(y\),这与 \(x,y\) 同时属于 \(g(f(S))\) 矛盾,因为还能进行操作。
  • 假若 \(w\) 能抵达 \(fa_x\),那么有 \(fa_x\in f(S)\),由于进行操作的顺序不影响结果,所以在求 \(g(f(S))\) 的过程中可以第一步就选出 \(fa_x,x\) 并将 \(x\) 删除,这与 \(x\in g(f(S))\) 矛盾。

因此可以说明 \(g(f(S))\) 只有 \(O(2^{m-n}+n)\) 种。而定义 \(G(S)\) 表示集合 \(S\) 内点可达点的并,又有 \(G(g(f(S)))=f(S)\)。

因此对于集合 \(S_1,S_2\),如果有 \(g(f(S_1))\ne g(f(S_2))\),则有 \(f(S_1)\ne f(S_2)\)。

因此 \(f(S)\) 也只有 \(O(2^{m-n}+n)\) 种。

如果大家有办法构造到证明的上界或者证明到构造的下界,欢迎来交流!

posted @ 2026-10-10 11:18  Ch1F4N  阅读(6)  评论(0)    收藏  举报