Solution Set - 图上问题

CF360E

Link&Submission.

首先显然可以选择的边的权值一定会取端点值。事实上,第一个人经过的边选最小,第一个人不经过的边选最大,这样一定不劣。进一步,如果 s1 到点 u 的距离小于等于 s2,则 (u,v) 这条边应该取最小值。所以可以初始全部当作最大值,不断选择一条边修改,直到不能再修改。这时检查距离,比较即可。

CF280D

Link&Submission.

好像跟图论没什么关系,不过题解区一片模拟费用流……

考虑线段树维护,每个区间上记录选择 j 个段,且开头/结尾选/不选的最大值。具体来说,mxj,0/1/2/3 分别表示选择 j 个段,开头结尾无限制/开头选,结尾无限制/开头无限制,结尾选/开头结尾都选的情况下,子段和的最大值。区间合并是容易的。时间复杂度 O(nk2logn),常数并不大。注意上面这个状态没有限制开头不选或者结尾不选,如果限制了转移需要写满 16 种,不限制的情况下可以减少到 8 种转移。

CF1062F

Link&Submission.

有向无环图没什么处理手段,考虑拓扑序。在拓扑排序的过程中,同时处于队列中的点一定互相不可达。所以做一遍拓扑排序,如果一个点出队的时候队列中还有另外两个点,则该点不够重要。如果一个点出队的时候队列中没有其他点了,那么这个点可以到达的所有点就是剩下还没有入队的点。剩下的一种情况是一个点 u 出队的时候队列中恰好还剩了一个点 v,那么如果后面还有 u 不能到的点,就一定会有一个这样的点是 v 的后继,那么它的入度只能为 1。也就是说检查 v 的所有出边,如果有入度为 1 的点则 u 也直接不合法,否则也算出 u 能到达的点数。再在反图上做一遍,就可以得出每个可能合法的点能到达或能被到达的点数,即可统计答案。

CF235D

Link&Submission.

显然把期望拆成概率。只用对所有有序点对 (u,v),求出删掉 u 的时候 vu 仍然联通的概率,最后求和即可。如果 u,v 间的路径不经过环,点数为 len,则概率就是 1len(相当于 u 在这 len 个的排列中位于开头);如果 u,v 间的路径经过环,设有 len 个点必须经过,环的两侧分别有 x,y 个点,则容斥可得概率是 1len+x+1len+y1len+x+y。枚举点对计算即可。

CF1240F

Link&Submission.

问题相当于给边染色。差不超过 2 的限制看起来很宽松,所以猜测一定可以全部染色。因为太宽松不好处理,所以考虑拆点,把边 (u,v) 换成 (u,v+n),要求新图中每个点邻边的颜色出现次数的极差不超过 1,最后合并 uu+n 即可。得到的新图显然是一张二分图。

再考虑拆点,把度为 d=qk+r 的点拆成 q+1 个点,前 q 个点度为 k,最后一个点度为 r,原来的边随便分配到这些点上(注意这样拆完之后的点数是 O(m) 的)。要求每个点连出的边颜色互不相同即可。那么考虑一条边 (u,v),随便选一个 u 还没用过的颜色 cu,一个 v 还没用过的颜色 cv。如果 v 也没用过 cu 就可以直接染色为 cu。否则找到 (v,w) 颜色为 cu,将其改为 cv(边 (u,v) 仍然染色 cu)。如果又有 (w,x) 颜色为 cv,则将其改为 cu。如此递归下去,最后一定成功,不然就表明选择的边成环了。如果这个环包含 u 就表明 u 已经连了颜色为 cu 的边,否则就表明某个点连了两条颜色相同的边,总之是荒谬的。

CF1268D

Link&Submission.

用到强连通竞赛图的几个性质:(记点数为 n3

  • 强连通竞赛图一定有哈密顿环。

    反证法。假设没有,取出点数最多的环 p1,p2,,pk,pk+1=p1(k<n)。考虑 u{p1,,pk},若有 i 使得边 (pi,u),(u,pi+1)E ,则与最大性矛盾。所以对每个这样的 u,要么 i,(u,pi)E,要么 i,(pi,u)E。记 S={u{p1,,pk}|(u,pi)E,i}T={u{p1,,pk}|(pi,u)E,i},因为图是强连通的,且 k<n,所以 S,T。同时一定存在 uT,vS 使 (u,v)E,否则 T 中的点无法到达 S 中的点。这时就发现 p1,u,v,p2,p3,,pk 是更大的环,矛盾。

  • 如果 n4,则可以删去一个点,使得剩下的图仍然是一个强连通竞赛图。

    由上一个结论可以直接知道一个竞赛图强连通等价于有哈密顿环。设原图中的哈密顿环是 u1,u2,,un,假如有 k 使得 (uk,uk+2)E,则删掉 uk+1 即可;否则,任何三个连续的点强连通,容易发现删掉任何点都仍然是强连通的。

  • 如果一个竞赛图中所有点的出度从大到小排序为 d1,d2,dn,则图强连通等价于不存在 k,使得 d1+d2++dk=Ck2

    对于一个竞赛图,按照强连通分量缩点之后,显然会得到一个全序图。考虑这个全序图中最后一个分量,它满足命题中的等式。只有当这最后一个分量是整个图的时候,图才是强连通的。既得证。

回到原题。利用第三个结论,可以在 O(n2logn) 的时间判断不进行操作和操作一次的所有情况。

注意到,如果图缩点之后有至少三个分量,那么翻转一个中间的点的邻边就可以使图强连通。所以判断完 0,1 后剩下的情况一定只有两个强连通分量。而如果这两个分量中有一个大小至少为 4,利用上面的第二个结论翻转一个点,借助第一个结论结论容易证明得到了一个强连通分量,所以这种情况也讨论过了。剩下的情况就是样例 2,3

CF1148G

Link&Submission.

先来尝试证明题目中的“always exists”。考虑补图,那么目标转化为:找一个大小为 k 的点集,要么每个点所在的连通块大小均为 1,要么均大于 1。那么,我们找一个最大的独立集 S,如果大小大于等于 k 就成立了,否则,对于每个不在 S 中的点,一定和某个 S 中的点连边了。让每个 S 外的点恰好连一条边,也就是在每个 S 中的点上挂了若干个点,设挂的点数从大到小为 c1,c2,,ct,t<k。注意到 2kn,由抽屉原理可知 c13。我们只需要找到 a1,a2,,at 满足 i=1tai=k,aici+1,ai1。这是非常容易的:2,3,,c11,(c11)+2,,c11+c2,(c11)+c2+2,,c2++ct 这些数中一定包含了 kk1 之一(注意 k3),取 a1=c11c1 即可。

或许不容易找到最大的独立集,但是在本题的条件下,不难找到一个极大的独立集。具体来说,我们依次尝试把每个数加入 S。这就要判断 S 中是否有与某个数互质的数。而利用莫比乌斯反演,容易计算出与某个数互质的数的个数。而对于极大的独立集,上面的证明当然也是成立的。

剩下的问题是,要判断不在 S 中的数和 S 中哪个数互质。注意到我们可以判断一个数是否与某一些数之一互质,所以单个询问可以二分,多个询问就可以整体二分。整体二分的实现是容易的。

时间复杂度 O(nlogn×28),后面这个 28 是因为 107 内的数最多有 8 个质因数,而用莫比乌斯反演计算时只需要考虑无平方因子数。实际跑不满。

posted @   by_chance  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示