2025 省选模拟 3

2025 省选模拟 3

[SNOI2024] 树 V 图

树形DP,计数题

注意到一个合法方案,对于相同 \(f(x)\) 的点一定构成一个联通块,且对应的关键点一定在这个联通块内。

注意到 \(n\le 3000\),考虑单次 \(O(n^2)\) 的做法,树形DP暴力枚举关键点是谁,对于转移我们只关心关键点和连通块顶部的点的距离,状态多开一维记录一下即可

时间复杂度 \(O(Tn^2)\)

[SNOI2024] 矩阵

链表,差分,数据结构,trick

lxl : 善用差分

没见过这种差分方式。

对于第一种操作考虑使用十字链表进行维护,由于更改相关位置只有 \(O(n)\) 个,可以直接旋转。但注意到一个问题,由于十字链表维护的上下左右只是一个相对位置,旋转后这个矩形内的相对位置会发生变化,所以可以给这个矩形区间加上一个旋转标记,这样就能正确找到相对位置,而区间加操作等价于第二种操作。

对于第二种操作考虑使用双向差分进行维护,具体的对于每一个位置记录他与他的上下左右的 \(\Delta\) ,这样每次需要得到一个位置的值时可以 \(O(n)\) 从一个已知位置(如边界),走过去得到所有信息。

对于上述两种操作,具体的可以先将边界和边界外围一圈的信息先得到(即所有可能会更改差分信息的位置),然后进行操作,再重新建立差分关系。

这样每次操作的时间复杂度是 \(O(n)\)

总时间复杂度为 \(O(n(q+n))\),略卡常。

[SNOI2024] 拉丁方

构造,二分图最小边染色,trick

结论 : 二分图最小边染色数 = 点最大度数

证明

首先必要性是显然的(一个点所有边的颜色得不一样)。

考虑证明充分性。

考虑通过一组构造证明

考虑对于一条边 \(u-v\) 进行染色,找到 \(col_u=mex(U),col_v=mex(V)\)

\(col_u=col_v\) 则直接连边

否则考虑增广。具体的钦定这条边的颜色为 \(col_u\),若 \(col_u\in V\) 则将与 \(v\) 相连是 \(col_u\) 的边染成 \(col_v\),然后不断增广下去,直到一个点不同时拥有 \(col_u,col_v\)

考虑这样做一定能进行增广的正确性。

这样增广最终只会单独形成一条链,或者与 \(u\) 一起构成一个 \(col_u,col_v\) 交替的环。

由于增广是不会到达一个 \(col_u,col_v\) 交替的环,因此上面两种情况归纳了所有的情况。

对于第一种情况显然能成功进行增广。

对于第二种情况由于二分图不存在奇环,且最初 \(u\) 并没有 \(col_u\) 颜色的边,所以一定能进行增广(或者说一定有 \(col_u=col_v\))。

以上证明了增广的正确性。

回到问题,由于此构造是通过每次至多花费一个度数增加一个 \(mex\) 的颜色,而这个 \(mex\) 是不会大于 \(\max\{deg\}\),所以颜色数是不大于 \(\max\{deg\}\)

证毕

暂存:简单图最小边染色数 = 点最大度数 + 0/1

考虑当 \(R=n\) 怎么做。

将每一行看作一个左部点,每个数看作一个右部点,每行缺什么数就将相应的行与数对应的点边。

时问题等价于构造出一组二分图最小边染色,考虑将边的颜色视作位置(第几列),对于左部点而言一个数只能占用一列,所以每个左部点的相连的边颜色应不同,对于右部点而言每个数所属列应不同,同上。

此时所有点的度数都是 \(n-C\) 所以此时一定有解。

\(R\not= n\)

先同上将矩阵补全为 \(R=n\) ,方法同上,不过此时可能有无解情况。

时间复杂度瓶颈在于求解二分图最小边染色数,单次 \(O(n^3)\),总时间复杂度为 \(O(Tn^3)\)

rotate

//

posted @   Qyun  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示