Codeforces Round 621 (Div. 1 + Div. 2)
USACO入侵CF
A. Cow and Haybales
题意:
一行 个数,每次可以将 1 从一个数移动到相邻的数,求 次内 最大值。
思路:
显然先移动 ,然后依次类推。
B. Cow and Friend
题意:
在二维平面上,一次只能走恰好 中的一个数,求从原点走到 的最少步数。
思路:
首先不难发现,如果非常远,我们肯定是先走最长的知道比较近。
所以我们先不断走最长的知道距离小于等于其两倍,这时候我们肯定可以再走两步到达,但是我们要判断现在有没有一步到的方案,如果有就一步到。
C. Cow and Message
题意:
一个字符串的一个子序列如果下标是等差数列就是好的。求一个子序列使得其作为好的子序列出现次数最多,求最多出现次数。
。
思路:
不难发现,如果子序列长度大于等于 一定不会更好,因为前两个就够了,所以我们只用判断所有长度为 或 的即可,精细实现可以做到 。
D. Cow and Fields
题意:
给定一张无向连通图和若干个特殊点,要求在特殊点之间加一条边,使得加边之后最短路最长。
。
思路:
不妨设 表示 的最短路, 表示 的最短路,我们就是要在特殊点中选两个点使得 尽可能大。
但是有个最小值不好处理,我们考虑令 ,这样最小值变成 ,按照 排序就好了。
E. Cow and Treats
题意:
有一行 块草场, 表示其类型。
有 头奶牛, 表示其最喜欢的草场类型, 表示其饥饿程度。
一种划分只两个不交集合 , 中的奶牛交替吃草,每次 中从左边出发, 中从右边出发,一头牛只吃自己喜欢的类型,会一直吃到 然后在当前各自睡觉。如果一头牛吃不够或者碰到了睡觉的牛,那么他会很伤心。
一个划分是好的当且仅当没有奶牛很伤心。
求所有的好的划分使得 最大以及方案数。
思路:
我们首先发现其实只要 不同其实并不影响。所以我们考虑同一个 。
显然最多选两个,一个放左边,一个放右边。
那么现在只要分出两个集合,并且前面的和后面的不相交即可。内部的排序方案是唯一且存在的。
我们考虑枚举分界点,为了不重不漏,我们要求前 个属于 且第 个有奶牛睡觉。
我们对于每一种类型单独讨论,不妨设 表示奶牛在左边是睡觉的位置, 表示奶牛在右边时睡觉的位置。
如果选一个,则需要前 个中有 或者后面有 ,如果有 2 个,则就是前面选乘上后面选。
我们用前缀和维护,但是如果 ,则计算 时都会计入,但这是不合法的,我们可以用差分处理然后减去即可。
但是我们有一个要求 必须选,我们发现其实只关系一种颜色,且考虑到 不同时相同,所以我们就特判一下,选一个就只有一种方案,选两个就看一下是否有 即可。
时间复杂度 ,但是离散化一下其实可以做到 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】