Codeforces Global Round 14
这场貌似很典很好啊。
A. Phoenix and Gold#
给定一个长度为 的数组 和一个数 ,数组中的数各不相同,要求重新排列这个数组,使得对于每一个 ,都有 。
从小到大排序,如果存在 使得数列不满足条件那这样的 一定只有一个,如果 不在最后,直接和最大值交换位置即可。否则显然无解。
B. Phoenix and Puzzle#
输入一个数 ,求能否使用 个全等的等腰直角三角形来拼成一个正方形。要求每个三角形都必须使用。
好像除了样例给出的两种拼法外别无他法,于是只用判断除以 或者 是否是完全平方数即可。
C. Phoenix and Towers#
凤凰菲克斯有 个方块,分别高 ,所有 都不超过 。他计划将 个方块堆叠成 座塔。为了让塔看起来更漂亮,没有两座塔的高度差可以超过 。
请帮助菲克斯建造 座漂亮的塔,每个塔必须至少由一个方块构成,并且必须使用所有方块。
一个很自然的想法是小的和大的匹配去平衡这个高度。试一下发现确实可以。那么容易得出下面的做法:
给所有方块排序,取前 个,第 小和第 小匹配。然后我们给 个塔全部减去最小值,变成新的方块,其还满足高度 。再做刚才的事情,复杂度线性对数。直到不足 个停止这个过程。
一个等价的实现,维护 个塔,每次取出 个块,然后倒着加进去。
D. Phoenix and Socks#
Phoenix 有 只袜子(保证 为偶数),其中前 只左袜子,后面 只右袜子,。每只袜子有颜色 () 。
现在你有三个操作,每个操作代价为 :
1.将某只袜子颜色换为 。
2.将左袜子变为右袜子
3.将右袜子变为左袜子
求使所有袜子匹配成 对袜子(即,颜色相同,且左右袜子各一)的代价。。
注意没双袜子不需要左前右后。
先把每种颜色的左右袜子配对。思考只有颜色不同,类型相同时需要两步,尽量不要用这种。于是优先匹配颜色不同,类型不同的袜子。而颜色相同类型相同的袜子也可以只要一步,所以优先把不同颜色袜子都搞成偶数最好。
E. Phoenix and Computers#
给定 ,。你有 台电脑排成一排,你需要依次开启所有电脑。
你可以手动开启一台电脑。在任意时刻,若电脑 与电脑 都已经开启 ,电脑 将立刻被自动开启。你不能再开启已经开启的电脑。
求你有多少种开启电脑的方案。两个方案不同当且仅当你手动开启的电脑的集合不同,或是手动开启电脑的顺序不同。答案对 取模。
先思考什么样的集合合法?首先 和 必须手动打开,两个手动打开的电脑之间不能有超过 台没有打开的电脑。思考对于一个连续段的方案数,根据样例的提示,只能是手动打开中间的一个,然后往两边扩展。
直接算似乎没什么办法,还是得递推,设左边需要 步,右边需要 的方案数是 ,似乎有很简单的递推式 。而边界条件是 。可以格路计数但是这题不需要。
然后长度为 的连续段就可以 计算了。考虑对整个序列 dp,需要记录已经放了多少个,然后在枚举这一步放了多少个即可复杂度 。
F. Phoenix and Earthquake#
给定一张 个点 条边的无向连通图和正整数 ,点有非负权值 。
如果一条边 满足 ,可以将 缩起来,新点的点权为 。
判断这张图是否可以缩成一个点。如果是,还要输出每次缩的是哪条边。
靠又忘记了这种题怎么做了。
先找找反例,合并至少发生 次,所以如果 ,那么一定不行。看到 ,想到树的情况。或者看到一张图就应该想到合并一棵生成树即可。
然后,这不是和 NOI2020 制作菜品 一模一样吗?
G. Phoenix and Odometers#
给定一张 个点 条边的有向图,有边权,进行 次询问(,边权为不超过 的正整数)。
每次询问给定三个参数 ,你需要回答是否存在一条起点终点均为 的路径,满足 。
就是对 scc 进行处理,你可以走若干个环,根据 bezout 定理,就是求所有环和 的 是不是整除 。而在 scc 中环长有一个经典结论就是你只用处理横叉和返祖边,理由是辗转相见。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具