AtCoder Grand Contest 001

比赛链接

A - BBQ Easy

从小到大排序以后,答案就是所有奇数位置之和。

B - Mysterious Light

发现去掉前两次反射以后,剩下的是一个在平行四边形内反射的过程,且形式类似于辗转相除。具体地,

F(n,x)={nx=02xnx+F(x,nmodx)x>0

最后的答案就是 F(nx,x)+n

C - Shorten Diameter

直接 DP,设 fi,j 表示考虑 i 子树内的一个以 i 为根的连通块,最大深度不超过 j,且直径不超过 K,的最大点数。合并子树信息是简单的。

D - Arrays and Palindrome

这个题就比较智慧了。

首先,一段长为 L 的回文串能够贡献 L2 对相等关系。由于相等关系至少需要有 n1 对,所以给定的 A 数组中至多有两个奇数,否则无解。

将这两个奇数放到开头和结尾,并构造 B:=[A11,A2,,AM1,AM+1]。注意特判 M=1A1=1 的情况。

E - BBQ Hard

现在已经成为套路了。

答案就是

1i<jN(Ai+Aj+Bi+BjAi+Aj).

假如固定 i,j,那么这个组合数可以描述为从 (Ai,Bi) 走到 (Aj,Bj),每次只能向上或向右走的方案数。

由于值域很小,所以可以统一进行一次 DP。时间复杂度 O(N+V2)

F - Wide Swap

考虑 P 的逆排列 Q=P1,在 Q 上,操作可以描述为每次交换相邻的两个差 K 的元素。

考虑一对 i,j 满足 i<j|QiQj|<K,那么 Qi 在任意时刻都一定在 Qj 前面。并且只要对于任意 i,j 均满足这个条件,这样的 Q 就是能得到的。

根据这个条件可以建出一张 DAG,我们需要最小化这个 DAG 的一个拓扑序 p 的逆 p1。根据一个结论:

在一张 DAG 上,一个字典序最大的拓扑序 p,其逆 p1 也是字典序最大的。

所以只需要在反图上求最大拓扑序 p,然后 reverse(p1) 就是答案。

唯一的问题就是这张图有 O(N2) 条边。但这也是容易的:考虑从 Qi 连出去的边,也就是所有的 j<i 满足 Qj(Qik,Qi+k)。只需要向其中 Qj<Qi 的最大 j,以及 Qj>Qi 的最大 j 连边即可。

时间复杂度 O(NlogN)

作者:alan-zhao-2007

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

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

posted @   Alan_Zhao_2007  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题