趣题记录(被鸽了)
趣题记录
为啥是趣题记录?
之前试过很多次按时间顺序编年体的做题记录,但是都因为在机房做题不方便更新、有些题没有什么意义等原因导致越攒越多,最后就咕掉了,因此决定试一试只记录有趣的题。
记录
CF55C Pie or die (CF )
棋盘上有 个棋子,每回合 Alice 选择一个棋子并移到相邻的格子(四连通)或者移出棋盘(如果在边界),然后 Bob 在棋盘上(包括边界)添加一个挡板。如果 Alice 可以将至少一个棋子移出棋盘则获胜,请求出能否获胜。
。
题解
Alice 向棋盘一边移动一枚棋子,可能从两个角落移出,因此 Bob 会填补两个角落的四个出口,直到棋子到达边界。到达边界后,Bob 填补对应的出口,Alice 沿着边界移动,如果有一个出口未被填补则可以获胜。
容易发现 Bob 需要多执行四次操作,因此 Alice 获胜的充要条件为:至少存在一枚棋子,到达边界的距离不超过 。
CF1060C Maximum Subrectangle (CF )
给定 、 和 ,定义 ,求 的最大子矩形面积,使得其中元素和不超过 。
,。
题解
由乘法对加法的分配律知 ,前缀和维护之。
P8511 [Ynoi Easy Round 2021] TEST_68
给定一棵 个节点的有根树,根节点为 ,第 个点有点权 。对于每个 ,求出在以 为根的子树外选两个点 的 的最大值。
,。
题解
在全局求出最大异或和,设为 ,则所有不在 子树内的点的答案均为 。因此我们只需要统计 到 的两条链上节点的答案。
从链顶向链底搜,求出当前节点答案后,将当前节点以及当前节点的不在链上的儿子的子树插入 01-Trie 树中,动态维护最大异或和以及产生最大异或和的一对节点即可。
CF1707E Replace (CF )
给定一个长度和值域均为 的数列 ,定义 。共 次询问,每次给定 ,求至少用 迭代多少次使其变为 ,或判定无解。
。
题解
神题。
想到倍增,但是 个区间显然没法记录。
函数有个很好的性质:若区间 ,则 。感觉整道 *3500 题的难点就在这里。
如果想到这一性质,就可以通过类似 ST 表的方法,只记录长度 的区间的倍增数组然后合并即可。
CF468C Hack it! (CF )
定义 为 的各数位之和,给定 ,构造一组 使得 。
,要求 。
题解
神题。
注意到 。
设 ,注意到 ,则 时有 , 符合题意,只需求 。
注意到 。
你问我怎么注意到?我也不知道,太神仙了。
CF1746E1 Joking (Easy Version) (CF )
交互题。
给定 ,请猜测一个未知的整数 。
你可以进行至多 次如下询问:
- 任选一个整数集合 ,询问 是否成立。
- 交互库会说谎话,但保证相邻两次回答至少有一次是真的。
你还可以进行至多 次如下猜测:
- 任选一个整数 ,询问 是否成立。
- 交互库只说真话,当回复为成立时视为通过。
。
题解
设 表示当前时刻候选的整数个数。
当 时,不断执行下列操作直到 :(有点四分查找的意思)
- 将候选整数平均分为 四个集合。
- 询问 ,设回复为 。
- 询问 ,设回复为 。
- 若 ,则 ,排除集合 。
- 若 ,则 ,排除集合 。
- 若 ,则 ,排除集合 。
- 若 ,则 ,排除集合 。
当 时,执行下列操作:
- 设候选整数为 。
- 询问 ,设回复为 。
- 询问 ,设回复为 。
- 询问 ,设回复为 。
- 询问 ,设回复为 。
- 若 ,则 ,排除元素 。
- 否则,,排除元素 。
当 时,对所有候选整数进行猜测。
CF1491D Zookeeper and The Infinite Zoo (CF )
有一个无数个节点的图, 到 有单向边,当且仅当 。 次询问,每次询问 是否能到 。
,询问满足 。
题解
显然 无解。
然后要求二进制任何一个后缀中 的 数量都不需要 的。
CF1753B Factorial Divisibility (CF )
判断 是否能被 整除。
,。
题解
有 。
统计每一个数码的个数,然后进一遍位,如果 都进位没了就可行。
CF1753C Wish I Knew How to Sort (CF )
给定长度为 的 串 ,每次操作等概率随机选取两个位置 ,若 ,交换 和 ,不论交换成功与否都算一次操作。求使数列升序的期望操作次数。
。
题解
设共有 个 和 个 。
目标是将 变为 ,所有在左边内部交换或者右边内部交换的操作都是没有意义的,只有跨两边的交换才能使一对数归位(称为有效交换)。
设当前前 个位置有 个 ,则后 个位置也有 个 ,有效交换的概率为 ,期望是概率的倒数,又由期望的线性性易知答案为 。
P2507 [SCOI2008] 配对
给定两个长度为 的序列 ,将 任意重排,要求 的情况下使得 最小。
。
题解
不妨设 升序。
显然无解当且仅当 且 。
若不要求 ,则是一个经典的排序不等式贪心问题,将 升序即可。
但是要求 ,考虑在此基础上对 进行微调。如果 ,自然地想到可以通过前后错一个的方式来使它们不同,同时也不会导致所求增加太多。具体地, 只可能跟 搭配。
设 表示考虑 排序后的前 项的答案,只需要考虑对应项直接配对、两对交错配对、三对轮换配对转移即可。
CF1650G Counting Shortcuts (CF )
给定一个无向图,求与 之间的最短路长度差不超过 的路径条数。
。
题解
首先建分层图,所有边分为层内边、层间边两类。
最短路数量容易在 BFS 时 DP 求出。
容易发现比最短路长度恰好多 的路径一定走恰好一条层内边。从 分别 BFS,枚举层内边利用 DP 数组算贡献即可。
CF1637D Yet Another Minimization Problem (CF )
给定两个长度为 的数组 ,可以选择若干下标 并交换 ,最小化 。
。
题解
显然左边两项是定值,只需计算右边两项的最小值,DP 即可。
AGC044C Strange Dance (AT )
有一个初始为 的数列 ,进行 次操作:
- 操作一:第 个数移动到第 个位置,当且仅当它们的三进制表示中 对应 , 对应 。
- 操作二:整个数列向右移动一位,最右边的移动到最左边。
,。
题解
本题用到了一个 Trie 树下标加一的 trick,详见 题解 [AGC044C] Strange Dance。
ABC259Ex Yet Another Path Counting (AT )
给定一个 矩阵,只能向下或向右走,求起点终点数字一样的路径条数。
。
题解
每种颜色分开考虑。设计两种算法分别解决颜色多和少的问题,然后根号分治,详见 题解 [ABC259Ex] Yet Another Path Counting。
ARC121D 1 or 2 (AT )
有两个可重集 , 初始为 。每次从 中删除一个或两个数,并将它们的和加入 中,重复操作直到 。最小化 的极差。
。
题解
诈骗题,先观察如果必须删除两个数有什么性质,然后思考一个转化,详见 题解 [ARC121D] 1 or 2。
AGC047C Product Modulo (AT )
给定 个数,求他们两两的乘积对 取模后的和。
。
题解
试着利用原根将两两的乘法化为卷积形式,然后使用 FFT 优化,详见 题解 [AGC047C] Product Modulo。
P4092 [HEOI2016/TJOI2016]树
有一棵 个节点的有根树,两种操作共 次:
- 标记一个节点。
- 询问离一个节点最近的标记过的祖先。
。
树剖解法并不够优美,试找出一种更简单的解法。
题解
记录每个点被标记次数,用并查集维护。若一个点被标记过至少一次,则令并查集中的父亲为自己;否则令并查集中的父亲为自己的父亲。
时间倒序离线。若为标记操作就将标记次数减一,当减为零时令并查集中的父亲为自己的父亲;若为查询操作,直接在并查集中找根。
CF576C Points on Plane (CF )
好久以前做过的题,突然想起来就来补一下。
平面内有 个点 ,定义两点间距离为曼哈顿距离。请将 个点重新排序,使得相邻两个点的距离和不超过 。
,。
提示
将 看成 ,有没有使你想到什么算法?
题解
把莫队的排序方法套过来即可,注意需要奇偶块优化。
P5089 [eJOI2018] 元素周期表 | CF1012B Chemical table (CF )
有一个 的表格,有 个位置被涂成黄色。你可以选择任意两行、两列,若交出的四个格子中有三个是黄色的,则可以不花费代价将第四个也涂黄。另外,你也可以花费 的代价指定任意一个格子涂黄。求将整个表格都涂黄的最少代价。
,注意不是 的乘积。
题解有时间再更。
AT_ddcc2020_qual_e Majority of Balls (AT )
交互题。
有 个数,其中 个是 另外 个是 。每次你可以查询任意 个数和的正负性,求出每个数。
且 ,询问次数不超过 。
题解我做完再更。
ARC153C ± Increasing Sequence (AT )
给定 数列 ,构造等长数列 ,满足 、序列严格递增且 ,或判定无解。
。
题解
考虑构造一个初始的 然后进行调整,详见 题解 ARC153C【± Increasing Sequence】。
ARC154D A + B > C ? (AT )
交互题。
有一个 的排列 ,每次可以询问 ,交互库给出 是否成立,求出这个排列。
,询问次数不超过 。
题解
考虑找出 的位置,然后 ,详见 题解 ARC154D【A + B > C ?】。
CF1375F Integer Game (CF 2600)
待添加。
ARC070F HonestOrUnkind (AT 3365)
待添加。
AGC019F Yes or No (AT 3742)
待添加。
CF1508D Swap Pass (CF 3000)
待添加。
AGC030D Inversion Sum | CF258D Little Elephant and Broken Sorting (AT 2712 | CF 2600)
待添加。
CF1260E Tournament (CF 2400)
待添加。
CF1545D AquaMoon and Wrong Coordinate (CF 3000)
待添加。
CF1768F Wonderful Jump (CF 2900)
待添加。
AGC002F Leftmost Ball (AT 3399)
待添加。
CF103119I Nim Cheater
待添加。
P4211 [LNOI2014]LCA
待添加。
CF1775E The Human Equation (CF 2100)
待添加。
ABC025D、CF1149D、P5304
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!