2023省选题解

D1T1 火车站

为什么省选会考这种题?
不妨考虑一直往右走的情况,如果某一段轨道的左端点是可以到达的,就说明这一段都是可以到达的。
对所有轨道按左端点排序,同时维护能够到达的最右点 lim,对于新加入的轨道 [l,r],如果 llim 就说明这段轨道是可以到达的,同时将 lim 更新为 max(lim,r),将 r 记入答案。
初始时 lim=x,左边同理,对于 l<x<r 的区间,拆成 [l,x][x,r] 即可。

D1T2 城市建造

题目要求大概是能不能将原图分成若干个连通块,连通块大小差 k,同时每个连通块内与其他连通块连边的点有且仅有一个。
不难发现这种与外面连边的点必然是割点,同时,如果一个点双连通分量不全在一个连通块中,这些点一定两两不在同一连通块内。这些又可以用反证法证明。
考虑建出圆方树,那么一个点双被分割开就相当于是直接删除圆方树中对应的方点。
由于原图中 t 个点联通,所以对于圆方树中删除的两个方点的路径上所有的方点都会被删掉,或者,可以说,删除的方点是“联通”的。
考虑DP维护答案,同时每一种删除方式的贡献在所有删除方点的LCA处统计贡献。
由于只有圆点对应原图中实实在在的点,所以我们的子树大小记录的是子树内圆点的数量。

考虑对于每一个特定的连通块大小 gg+k 进行DP(其实有解的 g 只有 O(n) 种)。

我们设计一个DP数组 f,表示:

  • 如果这个点为圆点,表示它的父亲被删除的情况下,子树内合法的删除方案数。
  • 如果这个点是方点,表示在它被删除的情况下,子树内合法的删除方案数。

对于 k=0
子树大小 sizvg 的,必然是它自己成为一个块。如果这个点是圆点,如果 sizv<gsizv+1=g,说明可以把所有<g 的拼成一个连通块,方案数为 sizvgfv;如果这个点是方点,它必须被删除,所以如果出现 sizv<g 的子树 fu 就是 0,否则是 fv

对于 k=1
k=0 唯一的区别就是:在这个点是圆点的情况下,如果不存在 sizv<g,那么我们可以选择一个 sizv=g 的子树和这个节点拼成一个大小为 g+1 的连通块,此时方案数为 sizvgfv×(1+sizv=g1sizv)

考虑答案统计,如果所有删除方点的LCA是方点,只需要判断这个子树内节点数是否是 ng 或者 ngk 即可。如果所有删除方点的LCA是圆点,这是就只能选择至少删除了2个儿子方点的所有方案了,然后在判断和方点一样的条件。

考虑剪枝优化,如果 siz<gf=0。复杂度优化到 O(nlogn)

细节有点多,注意实现。

D1T3 人员调度

考虑 m=0 的情况,就是一个类似最大权匹配问题。
在解决这类问题时,每次都是选择最长路增广,我们考虑将所有的人员进行排序,从大到小加入,对于每一个数看加入之后是否有完美匹配,有就加入,没有就删除。而根据hall定理,如果每一个子树内选择的节点数量小于子树大小,就一定存在完美匹配。
具体实现时,每一个节点的初始值时子树大小 sizu,考虑加入一个节点时,如果它到根的路径上每一个点的值都 >0,则加入这个点,并将到根的路径上每个点权值减 1,使用树剖实现复杂度为 O(klog2n)
考虑存在加入怎么办,由于我们不能进行排序。所以在无法形成完美匹配的时候存在某一个点替代掉另一个点的情况,如果这个点到根路径上值的最小值为 0,则找到深度最深的 =0 的节点,在它的子树内找到一个权值最小的点,如果将其删掉更优,就将其删掉然后加入当前员工。
可以使用树剖+小根堆维护子树内权值最小的点,实现复杂度为 O((k+m)log2n)
考虑带删除怎么办,发现我们维护的东西不好用删除实现,所以考虑对时间进行分治,将加入删除变成 O(logm) 次加入和撤销。
使用树剖时间复杂度为 O((k+m)log2nlogm)105 有点小卡,但是能过。
考虑将树剖换成全局平衡二叉树,复杂度变为 O((k+m)lognlogm)

D2T1 过河卒

博弈论问题,发现状态数只有 n3m3106 个,转移方式只有 5.5×106 条,考虑直接建图。
考虑某一个点的胜负态确定方式:

  • 如果转移中存在胜态,选择其中最短的。
  • 如果所有状态都是负态,选择其中最长的。
  • 如果无法使用上面两种确定方式确定,就说明存在平局方式(因为如果所有可以转移的胜负态都能用上述方法确定,则这个点就可以确定)。

发现上述所有性质均符合广搜,所以直接反向广搜即可,复杂度 O(n3m3)
可以通过钦定红方棋子顺序来将状态数优化成原来的 12,这样常数会小些,但是这道题好像没有卡。

D2T2 填数游戏

首先考虑什么情况下Bob会无解。
加入对于Bob的每一个集合 Ti 对应成图上的一条无向边,对于 Ti={v} 连接边 (v,v),对于 Ti={u,v} 的连接边 (u,v)。现在Bob的任务就是对于所有的边进行定向,是的每一个点的入度都 1
也就是说,对于一个连通块 G(V,E),只有在 |V||E| 时可能有解,又因为图联通,所以 |V|=|E||V|=|E|1
Alice做的事情就是,对于Bob的每一条边,Alice可以在 02 个节点中选择一个,如果和Bob的定向一直,则对答案做 1 的贡献。显然,能选择 01 的选择时固定的,我们称其为固定的,所以问题就是如何处理 2 种选择的,我们称其为可选择的。
对于 |V|=|E| 的情况,图是一个基环树,定向之后其必然是基环外向树,所以考虑环的情况。最终只会有顺时针或逆时针,我们假设顺时针有 p1 个固定的,逆时针有 p2 个固定的,有 q 个可选择的,最终答案就是 min(p1+p2+q2,min(p1,p2)+q),需要特判环长为 1 的情况。
这个部分可以在若干次dfs中完成,复杂度 O(|E|)
对于 |V|=|E|1 的情况,图是一棵树,定向之后是一个外向树,考虑在每一个节点处记录选择它为根时的答案。
那么对于Alice的每一次定向,她会对她没有指向的一侧的所有节点 +1
假设有两个可选择的边,它们做贡献的点集分别为 V1V2,且 V1V2=。我们将其反向,变为 VV1VV2,则答案一定不劣,同时这两个结合有交了。
由此,我们可以证明,所有可选择的边的方向必然构成以某个点为根的外向树。
我们将跟沿一条边移动一次,只会修改一条边的方向,使用线段树维护复杂度时 O(|E|log|E|) 的,如果使用换根DP维护可以做到 O(|E|)
总体复杂度为 O(n+m)O(n+mlogm)

D2T3 染色数组

不会,sto Alex_Wei orz

posted @   Xun_Xiaoyao  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
/* 鼠标点击求赞文字特效 */
点击右上角即可分享
微信分享提示