4月CF杂题
Codeforces Round 862 (Div. 2)
E. There Should Be a Lot of Maximums
题意:定义一棵点有颜色的树的
先找到整棵树的
F1. Survival of the Weakest (easy version)
题意:定义
联想到 146. 序列 的做法,我们就在
F2. Survival of the Weakest (hard version)
题意:同上,但是
刚刚的做法怎么优化?直觉告诉我们一个数组中较大的一些数是没有用的。更具体地说,我们只需要保留数组中前
如果
好像可以只保留
Educational Codeforces Round 146 (Rated for Div. 2)
D. Balancing Weapons
题意:定义一次操作可以把
首先改 n 次一定可行,只需要判断答案能否小于 n。枚举不变点
E. Chain Chips
很板吧。
题意:一条链每个点上有一块编号与点相同的芯片,求最小的所有芯片移动距离之和,使得所有芯片与点错拍(每个点上放一个)。支持单点修改边权。
发现使一段错拍的代价为 2 倍长度,不妨假设所有边全部会经过,问题转化为选一些不相邻的边,使得权值和最大。
Codeforces Round 866 (Div. 2)
D. The Butcher
题意:定义一次操作是将一个矩形分割成两块,其中一块放到一旁,另一块会留在手上成为下一次操作的矩形(不会交换长宽)。现在给出 n-1 次操作后剩下的所有矩形(顺序不定),求原矩阵长宽的方案。
显然最大的长/宽一定是原始矩阵的长/宽,所以只有至多两种方案。怎么 check?每次减掉与当前长/宽相同的所有矩阵。
E. The Fox and the Complete Tree Traversal
题意:对一棵树构造一个排列
手玩发现有解的充要条件是“把叶子删掉后剩下的部分是一条链”。下面证明必要性和充分性。
必要性:假设删去叶子后不是链,则存在一个点度数
充分性:有构造方案。找到树的直径,以端点为起点。先两步地跳,把原树分层,对于一层内的结点先让叶子加入答案,然后递归处理非叶子,在回溯的过程中把两步跳过程中略过的结点加入答案(具体见代码)。不难发现这样可以构造出一组答案。
Codeforces Round 865 (Div. 2)
D. Sum Graph
题意:交互。猜一个隐藏排列 p(知道长度 n),可以猜两次。初始图为空,至多进行 2n 两种操作:1.指定 x,把所有满足
因为一边查一边加边比较复杂,容易改变图的形态,考虑先加边再查询。对
Educational Codeforces Round 147 (Rated for Div. 2)
D. Black Cells
题意:你站在一条全白的数轴上,初始位置为 0。有三种操作:1.向右移动一格;2.打开 shift 开关;3.关上 shift 开关。在 shift 开关打开期间经过的点(包括打开开关的那个点)将会在关上开关后变为黑色。给定 n 个区间,求在这 n 个区间中恰好涂黑 k 个位置的最小操作数(不可以涂黑区间之外的区域)。
假设现在把前 m 个区间全部涂黑了。这样可能会多涂黑一些格子,有两种途径减少他们:1.少走几步;2.有些区间经过时不按 shift。发现除了长度为 1 的区间是方法二比较赚,其它区间选择少走一定不劣。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】