The 2nd Universal Cup. Stage 28: Chengdu 题解

比赛链接

A. Add One 2

感觉这个题好难啊。怎么过这么多队。

直接贪心不好做,先考虑什么样的序列 x1,x2,,xn 是能得到的。

对于每个 1i<n,如果 xi>xi+1,那么至少要在 [1,i] 这个前缀操作至少 xixi+1 次;如果 xi<xi+1,那么至少要在 [i+1,n] 这个后缀操作至少 xi+1xi 次。如果倒着做这些操作,那么做完这些操作后所有 xi 都会变成一个相同的数,而我们需要这个数非负。

这等价于

x1i=1n1max(0,xixi+1),xni=1n1max(0,xi+1xi).

如果令 x0=xn+1=1018,那么等价于

1018i=0nmax(0,xixi+1),1018i=0nmax(0,xi+1xi).

由于这两个式子的值是一样的,加起来得到

2×1018i=0n|xixi+1|.

对于原来的序列 y,能做的操作是每次选一个位置加上 1,问最少进行多少次操作才能使得 y 满足上述条件。

对于 y 中的一段 yl=yl+1==yr,如果 min(yl1,yr+1)>yl,那么将 [l,r] 这一整段都加上 1,就可以使得绝对值之和减少 2。那么每次选择长度最小的这样的段进行操作即可,可以用堆维护。

O(nlogn)

C. Colorful Graph 2

给出的是正多边形的一个三角剖分的一部分,所以不妨考虑如果给的是完整的三角剖分,应该怎么做。

显然只需要考虑所有三元环,如果在有公共边的三元环之间连边,会形成一棵树,先任选一个三元环随便染色,然后和它有边相连的三元环只有一个点没有被染色,而且这个点有至少一种染色方式。所以按照这棵树的某个拓扑序进行染色即可。

O(nlogn)

D. Min or Max

模拟。

F. Whose Land?

扫描线扫右端点 r,设 ti 表示最大的 ur,使得点 uk 邻域内包含点 i。我们希望用数据结构维护对于每个 x,有多少个 i 满足 ti=x,这样回答询问就是简单的。

和 JOISC 2022 洒水器一样,可以把点 uk 邻域拆成 O(k) 个形如“在某个点的子树内且深度恰好是某个值”的不交并,所以对于每个深度,用 set 维护连续段即可。

O((nk+q)logn)

G. China Convex Polygon Contest

首先做题顺序肯定是按照 bi 从小到大做,不确定的是什么时候交题。设 b1,b2,,bn 排序以后的前缀和是 s1,s2,,sn

对于一段 [ai,ai+1),设落在这段区间内的是 sl,sl+1,,sr,那么有两种选择:

  • sl,sl+1,,sr 都用于匹配 i+1 以后的提交;
  • sl 用于匹配 ai(可能匹配不全),sl+1,,sr 用于匹配 i+1 以后的提交。

如果某个 si 匹配了一个 aj (j>i),那么落在 [aj,aj+1)sk 一定不会选择匹配 aj

所以按照 i 从大到小考虑 [ai,ai+1) 中的所有 sj,每次可以尝试反悔掉一些匹配自身的,或者直接匹配一个空的段 [ax,ax+1)。需要用线段树维护区间 min。

O(nlogn)

H. The Game

最后还剩两个数时,如果这两个数相同,那么 Kevin 就输了。而且发现这是充要的,所以做完了。

J. DFS Order 5

模拟。

K. Sticks

先考虑判定一个 n×m 的矩阵 M 是否能得到。

每次尝试消去最后一行,我们会选择一段前缀 Mn,1=Mn,2==Mn,k=1,钦定这一段是从左端伸出来的。那么对于 Mn,k+1,,Mn,m,如果其中一个 Mn,j1,那么它一定是从顶上延伸下来的。找到最小的一个这样的 j,列 j,j+1,,m 都一定只有从顶上延伸下来的木棍,剩下的是一个子矩阵 M1(n1),1(j1)

发现每次一定可以选最大的满足条件的 k,因为如果 Mn,k+1=1,那么它一定是从顶上延伸下来的,但将它调整成从左边延伸过来是不会改变任何事情的。

于是在判定过程中,行数和列数的变化是确定的,直接把这个过程写成 DP 即可。

O(n2)

M. Bot Friends

我们要找到机器人和洞之间的一个匹配,那么考虑一个匹配能否得到。发现充要条件是任意两组匹配要么包含要么不交。

所以匹配形成了一个括号树,我们需要最小化叶子的个数。考虑在 i+0.5 的机器人能否向左匹配任意一个不与它相邻的洞,发现只需要前面有某个机器人把 i 位置的洞匹配掉就可以。

所以设 fi,j,0/1 表示考虑了前 i 个机器人(不考虑第 i 个机器人后面的洞),目前有 j 个向 >i 的洞匹配的机器人,且第 i 个机器人是/不是向后匹配的最小叶子个数。转移时先考虑 i+1 这个洞如何匹配,再考虑 i+1.5 这个机器人如何匹配即可。

O(n2)

作者:alan-zhao-2007

出处:https://www.cnblogs.com/alan-zhao-2007/p/18140453

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

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