趣题记录(被鸽了)

趣题记录

为啥是趣题记录?

之前试过很多次按时间顺序编年体的做题记录,但是都因为在机房做题不方便更新、有些题没有什么意义等原因导致越攒越多,最后就咕掉了,因此决定试一试只记录有趣的题。

记录

CF55C Pie or die (CF 1900)

n×m 棋盘上有 k 个棋子,每回合 Alice 选择一个棋子并移到相邻的格子(四连通)或者移出棋盘(如果在边界),然后 Bob 在棋盘上(包括边界)添加一个挡板。如果 Alice 可以将至少一个棋子移出棋盘则获胜,请求出能否获胜。

1n,m,k100

题解

Alice 向棋盘一边移动一枚棋子,可能从两个角落移出,因此 Bob 会填补两个角落的四个出口,直到棋子到达边界。到达边界后,Bob 填补对应的出口,Alice 沿着边界移动,如果有一个出口未被填补则可以获胜。

容易发现 Bob 需要多执行四次操作,因此 Alice 获胜的充要条件为:至少存在一枚棋子,到达边界的距离不超过 4

CF1060C Maximum Subrectangle (CF 1600)

给定 a1,2,,nb1,2,,mx,定义 ci,j=aibj,求 c 的最大子矩形面积,使得其中元素和不超过 x

1n,m,ai,bi2×1031x2×109

题解

由乘法对加法的分配律知 i=l1r1j=l2r2aibj=(i=l1r1ai)(j=l2r2bj),前缀和维护之。

P8511 [Ynoi Easy Round 2021] TEST_68

给定一棵 n 个节点的有根树,根节点为 1,第 i 个点有点权 ai。对于每个 x[1,n],求出在以 x 为根的子树外选两个点 u,vauav 的最大值。

1n5×1050ai1018

题解

在全局求出最大异或和,设为 k=auav,则所有不在 u,v 子树内的点的答案均为 k。因此我们只需要统计 1u,v 的两条链上节点的答案。

从链顶向链底搜,求出当前节点答案后,将当前节点以及当前节点的不在链上的儿子的子树插入 01-Trie 树中,动态维护最大异或和以及产生最大异或和的一对节点即可。

CF1707E Replace (CF 3500)

给定一个长度和值域均为 n 的数列 a,定义 f((l,r))=(mini=lrai,maxi=lrai)。共 q 次询问,每次给定 (l,r),求至少用 f 迭代多少次使其变为 (1,n),或判定无解。

1n,q105

题解

神题。

想到倍增,但是 Θ(n2) 个区间显然没法记录。

f 函数有个很好的性质:若区间 I1I2,则 f(I1I2)=f(I1)f(I2)。感觉整道 *3500 题的难点就在这里。

如果想到这一性质,就可以通过类似 ST 表的方法,只记录长度 2k 的区间的倍增数组然后合并即可。

CF468C Hack it! (CF 2500)

定义 f(x)x 的各数位之和,给定 a,构造一组 (l,r) 使得 i=lrf(i)0(moda)

1a1018,要求 1lr10200

题解

神题。

注意到 f(1018+x)=f(x)+1

i=010181f(i)p(moda),注意到 i=k10181+kf(i)p+k(moda),则 k=ap 时有 p+k0(moda)(l,r)=(ap,10181+ap) 符合题意,只需求 p

注意到 p=81×1018moda

你问我怎么注意到?我也不知道,太神仙了。

CF1746E1 Joking (Easy Version) (CF 2500)

交互题。

给定 n,请猜测一个未知的整数 x[1,n]

你可以进行至多 82 次如下询问:

  • 任选一个整数集合 S[1,n],询问 xS 是否成立。
  • 交互库会说谎话,但保证相邻两次回答至少有一次是真的。

你还可以进行至多 2 次如下猜测:

  • 任选一个整数 y[1,n],询问 x=y 是否成立。
  • 交互库只说真话,当回复为成立时视为通过。

1n105

题解

n 表示当前时刻候选的整数个数。

n4 时,不断执行下列操作直到 n<4:(有点四分查找的意思)

  • 将候选整数平均分为 A,B,C,D 四个集合。
  • 询问 AB,设回复为 p
  • 询问 BC,设回复为 q
  • pq,则 xABC,排除集合 D
  • p¬q,则 xABD,排除集合 C
  • ¬pq,则 xBCD,排除集合 A
  • ¬p¬q,则 xACD,排除集合 B

n=3 时,执行下列操作:

  • 设候选整数为 a,b,c
  • 询问 {a},设回复为 p
  • 询问 {a,b},设回复为 q
  • 询问 {a,b},设回复为 r
  • 询问 {a},设回复为 s
  • ¬pqr¬s,则 x{a,b},排除元素 c
  • 否则,x{b,c},排除元素 b

n2 时,对所有候选整数进行猜测。

CF1491D Zookeeper and The Infinite Zoo (CF 1800)

有一个无数个节点的图,uu+v 有单向边,当且仅当 uandv=vq 次询问,每次询问 u 是否能到 v

1q105,询问满足 1u,v<230

题解

显然 u>v 无解。

然后要求二进制任何一个后缀中 u1 数量都不需要 v 的。

CF1753B Factorial Divisibility (CF 1600)

判断 i=1nai! 是否能被 x! 整除。

1n,x5×1051aix

题解

(k+1)×k!=(k+1)!

统计每一个数码的个数,然后进一遍位,如果 1x1 都进位没了就可行。

CF1753C Wish I Knew How to Sort (CF 2000)

给定长度为 n01a,每次操作等概率随机选取两个位置 i<j,若 ai>aj,交换 aiaj,不论交换成功与否都算一次操作。求使数列升序的期望操作次数。

1n2×105

题解

设共有 x0nx1

目标是将 a 变为 000|111,所有在左边内部交换或者右边内部交换的操作都是没有意义的,只有跨两边的交换才能使一对数归位(称为有效交换)。

设当前前 x 个位置有 k1,则后 nx 个位置也有 k0,有效交换的概率为 k2(n2),期望是概率的倒数,又由期望的线性性易知答案为 i=1k(n2)i2

P2507 [SCOI2008] 配对

给定两个长度为 n 的序列 a,b,将 b 任意重排,要求 aibi 的情况下使得 i=1n|aibi| 最小。

1n105

题解

不妨设 a 升序。

显然无解当且仅当 n=1a1=b1

若不要求 aibi,则是一个经典的排序不等式贪心问题,将 b 升序即可。

但是要求 aibi,考虑在此基础上对 b 进行微调。如果 ai=bi,自然地想到可以通过前后错一个的方式来使它们不同,同时也不会导致所求增加太多。具体地,ai 只可能跟 bi2,bi1,,bi+2 搭配。

dpi 表示考虑 a,b 排序后的前 i 项的答案,只需要考虑对应项直接配对、两对交错配对、三对轮换配对转移即可。

CF1650G Counting Shortcuts (CF 2100)

给定一个无向图,求与 (s,t) 之间的最短路长度差不超过 1 的路径条数。

1n,m2×105

题解

首先建分层图,所有边分为层内边、层间边两类。

最短路数量容易在 BFS 时 DP 求出。

容易发现比最短路长度恰好多 1 的路径一定走恰好一条层内边。从 s,t 分别 BFS,枚举层内边利用 DP 数组算贡献即可。

CF1637D Yet Another Minimization Problem (CF 1800)

给定两个长度为 n 的数组 a,b,可以选择若干下标 i 并交换 ai,bi,最小化 i=1nj=i+1n(ai+aj)2+i=1nj=i+1n(bi+bj)2

1n,n,ai,bi100

题解

i=1nj=i+1n(ai+aj)2+i=1nj=i+1n(bi+bj)2=i=1nj=i+1n(ai2+aj2+2aiaj)+i=1nj=i+1n(bi2+bj2+2bibj)=(n1)i=1nai2+(n1)i=1nbi2+2i=1nj=i+1naiaj+2i=1nj=i+1nbibj

显然左边两项是定值,只需计算右边两项的最小值,DP 即可。

AGC044C Strange Dance (AT 2889)

有一个初始为 [0,1,2,,3n1] 的数列 a,进行 m 次操作:

  • 操作一:第 i 个数移动到第 j 个位置,当且仅当它们的三进制表示中 1 对应 22 对应 1
  • 操作二:整个数列向右移动一位,最右边的移动到最左边。

1n121m2×105

题解

本题用到了一个 Trie 树下标加一的 trick,详见 题解 [AGC044C] Strange Dance

ABC259Ex Yet Another Path Counting (AT 2406)

给定一个 n×n 矩阵,只能向下或向右走,求起点终点数字一样的路径条数。

1n500

题解

每种颜色分开考虑。设计两种算法分别解决颜色多和少的问题,然后根号分治,详见 题解 [ABC259Ex] Yet Another Path Counting

ARC121D 1 or 2 (AT 2784)

有两个可重集 A,BB 初始为 。每次从 A 中删除一个或两个数,并将它们的和加入 B 中,重复操作直到 A=。最小化 B 的极差。

1|A|5×103

题解

诈骗题,先观察如果必须删除两个数有什么性质,然后思考一个转化,详见 题解 [ARC121D] 1 or 2

AGC047C Product Modulo (AT 2496)

给定 n 个数,求他们两两的乘积对 200003 取模后的和。

1n2×105

题解

试着利用原根将两两的乘法化为卷积形式,然后使用 FFT 优化,详见 题解 [AGC047C] Product Modulo

P4092 [HEOI2016/TJOI2016]树

有一棵 n 个节点的有根树,两种操作共 q 次:

  • 标记一个节点。
  • 询问离一个节点最近的标记过的祖先。

1n,q105

树剖解法并不够优美,试找出一种更简单的解法。

题解

记录每个点被标记次数,用并查集维护。若一个点被标记过至少一次,则令并查集中的父亲为自己;否则令并查集中的父亲为自己的父亲。

时间倒序离线。若为标记操作就将标记次数减一,当减为零时令并查集中的父亲为自己的父亲;若为查询操作,直接在并查集中找根。

CF576C Points on Plane (CF 2100)

好久以前做过的题,突然想起来就来补一下。

平面内有 n 个点 Ai(xi,yi),定义两点间距离为曼哈顿距离。请将 n 个点重新排序,使得相邻两个点的距离和不超过 2.5×109

1n1060xi,yi106

提示

Ai(xi,yi) 看成 Qi[li,ri],有没有使你想到什么算法?

题解

把莫队的排序方法套过来即可,注意需要奇偶块优化。

P5089 [eJOI2018] 元素周期表 | CF1012B Chemical table (CF 1900)

有一个 n×m 的表格,有 q 个位置被涂成黄色。你可以选择任意两行、两列,若交出的四个格子中有三个是黄色的,则可以不花费代价将第四个也涂黄。另外,你也可以花费 1 的代价指定任意一个格子涂黄。求将整个表格都涂黄的最少代价。

1n,m,q2×105,注意不是 nm 的乘积。

题解有时间再更。

AT_ddcc2020_qual_e Majority of Balls (AT 2436)

交互题。

2n 个数,其中 n 个是 1 另外 n 个是 1。每次你可以查询任意 n 个数和的正负性,求出每个数。

1n992n,询问次数不超过 210

题解我做完再更。

ARC153C ± Increasing Sequence (AT 1960)

给定 ±1 数列 a,构造等长数列 x,满足 |xi|1012、序列严格递增且 aixi=0,或判定无解。

1n2×105

题解

考虑构造一个初始的 x 然后进行调整,详见 题解 ARC153C【± Increasing Sequence】

ARC154D A + B > C ? (AT 2265)

交互题。

有一个 1n 的排列 p,每次可以询问 (i,j,k),交互库给出 pi+pj>pk 是否成立,求出这个排列。

1n2×103,询问次数不超过 2.5×104

题解

考虑找出 1 的位置,然后 pi+1>pjpipj,详见 题解 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

posted @   rui_er  阅读(244)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示