写题解的时候这场在评测,就不放代码了。
又是被 div3 薄纱的一天!
E. Graph Composition
题意
给两个无向简单图,对图 添加若干条边或删除若干条边,使得两图的连通性一致,最少需要变更多少条边。
题解
求出图 的连通性,考虑图 的所有边,若违背了图 联通性的要删除(图 不联通但图 联通的)。
接着求图 剩下边的连通性,对于图 的每条边,若违背图 连通性则要加这条边(图 不联通但图 连通)。
用并查集实现。
F. Multiplicative Arrays
题意
给定 ,对每个 ,求出多少个序列 使得:
。
题解
设 表示将 分解成 个有序的大于 的数的乘积的方案数,由于最多只能分解出 个这样的数,可以直接递推。
计算方案数,需要填充 在剩余位置,枚举 的大小是多少,对于一个拆分个数 ,其总方案数为:
由于 很小最多 级别,可以暴力求组合数(逆元也是暴力求),复杂度为 ,需要卡卡常。
G. Bugged Sort
参考了官方题解,不会啊咋办 😦
题意
给定两组序列,长度都是 ,两组序列的数两两不同,一次操作为选择 ,交换 ,交换 。
能否在若干次操作后使 均升序排序。
题解
首先观察到:一次操作后, 是绑定的,不会分开,我们称这是一对数。
一次操作实际上是将一对数交换,再分别翻转。能否在不翻转的情况下交换一对数?
答案是可以的,对于 ,额外选定一个位置 ,进行操作 ,就能做到。同理,也能做到不交换两对数只翻转两对数,但不能做到只翻转一对数。
再观察性质,两对数中,若 ,那第 对一定得排在第 对前面,否则一定不能达成目标。由于两组序列上的数两两不同,这个排序方案是唯一的。根据上面的性质,可以在不翻转的情况下将每对数排序。
现在考虑翻转的问题,我们需要确定偶数个位置,将这些位置翻转,达成目标,设 表示满足前 个数,一共翻转了奇数个或偶数个位置, 位置有没有翻转,能不能达成,转移是容易的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性