跳至主要內容

ICPC 2023 World Finals 部分题解

Wallbreaker5th大约 4 分钟OI×ICPCOI×ICPCOI×ICPC - 题解OI×ICPC - 交互题OI×ICPC - 线性代数OI×ICPC - 计算几何OI×ICPC - 计算几何 - 凸包OI×ICPC - 期望OI×ICPC - 置换环OI×ICPC - 数论OI×ICPC - 贪心

注意

题解写得可能非常抽象。

「如果一个题解你看不懂,那是题解垃圾而不是你垃圾。」

比赛链接:Codeforces Gymopen in new window

A. Riddle of the Sphinx

题意

有未知正整数 x,y,zx,y,z,你可以给定交互库 a,b,ca,b,c,交互库返回 ax+by+czax+by+cz;你最多询问 55 次,交互库会在其中至多一次给出错误答案。还原 x,y,zx,y,z 的值。

题解

随便取独立一些(大概就是任意三组都是线性独立的?)的几组系数,比如 (1,0,0),(0,1,0),(0,0,1),(1,1,1),(1,2,3)(1,0,0), (0,1,0), (0,0,1), (1,1,1), (1,2,3)。然后从中选四组,如果这四组内部没有矛盾,那答案就是用这四组求解出来的 x,y,zx,y,z

C. Three Kinds of Dice

题意

假设让两个均匀、每面有个整数的骰子 A 和 B 对战,则投这两个骰子,得到 A 和 B 各一个数,数大者得 11 分,相等则各得 0.50.5 分,我们可以计算双方的期望得分。

现在输入两个骰子,记较强者为 A、较弱者为 B;考虑对于所有骰子 C,求:

  • C 打 A 期望得分大于等于 0.50.5 的前提下,C 打 B 的期望得分的最小值。
  • C 打 B 期望得分小于等于 0.50.5 的前提下,C 打 A 的期望得分的最大值。

n105n\leq 10^5

题解

(场上想复杂了,把它当成一个先进线性规划来做了)

简单离散化之后,考虑 C 每个值分配的概率,这个概率对于打 A 会有一个分数贡献,打 B 也有一个分数贡献,把这两个贡献系数看成一个平面上的点;最后的期望得分是所有点的凸组合(系数非负,和为 11 的线性组合),也就是一个凸包。而要求的东西就是横(纵)坐标大于等于(小于等于)0.50.5 的情况下纵(横)坐标的最小(大)值,只需要检查凸包边界即可。

D. Carl’s Vacation

题意

平面上立有两个金字塔(底面为正方形的四棱锥,顶点的投影在正方形中心),保证底面的交面积为 00。求从一个金字塔顶出发,沿表面走到另一个塔顶的最短距离。

题解

对于每个金字塔,有两种情况:沿着一个面走到地面、沿着一条棱走到地面。后者容易处理,前者把那个面拿出来,以与地面的接触棱为轴,把它倒到地面上。这样要求的就是平面上两点的距离。方案合法要求平面上的这条线段:

  • 若某个金字塔走面,则要与这个面的底棱相交
  • 若两个金字塔都走面,则与这两个面的底棱的交点顺序必须正确(允许重合)。(考虑两个超高的金字塔,各自都选靠外侧面,倒到平面上后,各自都越过了对面的底棱;这显然不合法,但只靠第一条无法判断)

F. Tilting Tiles

题意

有一个 n×mn \times m 的 2048 状棋盘,每个格子可能是空的,或者是带特定颜色的矩形。一次操作可以将所有矩形向上下左右落下(就像 2048 的操作,不过没有合并)。问初始棋盘能不能到达给定棋盘。n,m500n,m\leq 500

题解

(场上会了但剩下的时间写不动了)

先判一次、两次操作,之后有用的操作只有八大类:左上然后重复右下左上,左下然后重复右上左下……每一类又可以按照模 44 再分类。这样得到 3232 种情况,以及在它们之后反复操作左上右下(右上左下)的情况。当然依靠目标状态占领哪个角,可以把 3232 变成 88

考虑一个状态反复做【左上右下】,首先每做一轮,形状轮廓不会变;从而我们得到一个每个格子变到哪个位置的置换,置换可以找环,每个环根据颜色求出循环节,则我们会有很多操作轮数模循环节长度等于给定值的要求。通过 CRT 状物检查即可。

H. Jet Lag

题意

有许多活动,均为开区间,给定初始和结束时间。你希望参加所有活动,但你需要睡觉。你每次睡觉 xx 小时,就可以醒 xx2x2x 小时。00 时刻你要立即睡觉。请你构造一种睡觉方案,或者判断无解。n2×105n\leq 2 \times 10^5

题解

大概做法是从后往前扫,要是空位提供的睡觉时长无法让我参加当前活动,就把它合并进前一个活动。需要处理一定的细节,具体不是我写的我不清楚(雾)。