专栏文章

题解:AT_agc063_f [AGC063F] Simultaneous Floor

AT_agc063_f题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq9i318
此快照首次捕获于
2025/12/04 01:09
3 个月前
此快照最后确认于
2025/12/04 01:09
3 个月前
查看原文
把有序数对看成坐标,扔到平面直角坐标系上研究。下面记点 A(a1,a2),B(b1,b2)A(a_1,a_2),B(b_1,b_2)。不加说明时,我们均指第一象限。记值域为 VV
发现点 P(x,y)P(x,y) 可以变成形如 (i,yxi),(xyi,i),iZ(i,\lfloor\dfrac{y}{x}i\rfloor),(\lfloor\dfrac {x}{y}i\rfloor,i),i\in\mathbb Z 的点。不过还是有向下取整,不好描述。
那么倒过来看,对于 Q(p,q)Q(p,q),能够到达它的 PP 的集合是什么。
设直线 OP:y=kxOP:y=kx,如果 PP 能到达 QQ,则 OPOP 必须穿过以 QQ 为左下角、边长为 11 的正方形,穿过是指 OPOP 在正方形内的部分的长度 >0>0
Qu(p,q+1),Qr(p+1,q)Q_u(p,q+1),Q_r(p+1,q),则只要 OPOPQrOQu\angle Q_rOQ_u 内部(不包括 OQu,OQrOQ_u,OQ_r),其就会穿过这个正方形。
那么就有 k(kOQr,kOQu)k\in(k_{OQ_r},k_{OQ_u}),即能够到达 Q(p,q)Q(p,q)P{(x,y)qp+1<yx<q+1p}P\in\{(x,y)|\dfrac{q}{p+1}<\dfrac y x<\dfrac{q+1}p\}
l1=b2b1+1,r1=b2+1b1l_1=\dfrac{b_2}{b_1+1},r_1=\dfrac{b_2+1}{b_1},我们就可以算出经过 1\le 1 次操作到达 BB 的点的集合为 S1={(x,y)l1<yx<r1}S_1=\{(x,y)|l_1<\dfrac y x<r_1\}
同理,设 l2=min{yx+1(x,y)S1},r2=max{y+1x(x,y)S1}l_2=\min\{\dfrac y{x+1}|(x,y)\in S_1\},r_2=\max\{\dfrac{y+1}x|(x,y)\in S_1\},则经过 2\le 2 次操作到达 BB 的点的集合为 S2={(x,y)l2<yx<r2}S_2=\{(x,y)|l_2<\dfrac y x<r_2\}
更一般地,对于 t2t\ge 2,设 lt=min{yx+1(x,y)St1},rt=max{y+1x(x,y)St1}l_t=\min\{\dfrac y{x+1}|(x,y)\in S_{t-1}\},r_t=\max\{\dfrac{y+1}x|(x,y)\in S_{t-1}\},则经过 t\le t 次操作到达 BB 的点的集合为 St={(x,y)lt<yx<rt}S_t=\{(x,y)|l_t<\dfrac y x<r_t\}
先来研究已知 lt1,rt1l_{t-1},r_{t-1} 如何求 lt,rtl_t,r_t。下面只讨论 ltl_trtr_t 是类似的。
问题相当于求最小的 yx+1\dfrac{y}{x+1},满足 lt1<yx<rt1l_{t-1}<\dfrac{y}{x}<r_{t-1}。考虑到 yx+1=1xy+1y\dfrac{y}{x+1}=\dfrac{1}{\frac{x}{y}+\frac{1}{y}},即我们要 yy 尽量小 xy\dfrac{x}{y} 尽量大。在 yy 最小的同时取 xx 最大即可,可以用反证法和一些缩放证明。
同理,求 rtr_t 时找满足 xx 最小的最大 yy 即可。
找到这样的 x,yx,y 可以在 SBT 上二分实现。
接下来就是要求第一次满足 AStA\in S_ttt。打表发现 lt,rtl_t,r_t 在迭代若干轮之后就不变了,所以可以暴力求每一轮的 lt,rtl_t,r_t 是多少。考虑到 l,rl,r 在 SBT 上移动的过程,得到 x=1x=1y=1y=1 后就不会变了,所以迭代次数是 O(logV)O(\log V) 的。
注意有点在坐标轴、y=xy=x 上以及不在 y=xy=x 同一侧的时候判无解。可以用关于 y=xy=x 对称简化讨论。
总的复杂度是 O(Tlog2V)O(T\log^2 V)

评论

0 条评论,欢迎与作者交流。

正在加载评论...