专栏文章

题解:P13836 微观戏剧(Constructive ver.)

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mio42cec
此快照首次捕获于
2025/12/02 13:01
3 个月前
此快照最后确认于
2025/12/02 13:01
3 个月前
查看原文
核心知识点:没有知识点,纯观察。
本题还是相当有意思的。
对于极小的数据,我们最好先看一下样例。
样例给了我们一点启发:
  • z=0z=0 的时候是两个相同的点(其实挺显然)。
  • z=1z=1 的时候是无解的(这个稍微想想也是挺简单的一个事吧)。
  • z=2z=2 的情况,样例没有提供。我们先不急。
接下来得出一个重要的结论:f(x0,y0)=min{lcm{x0,y0},x0+y0}f(x_0,y_0)=\min\{\operatorname{lcm}\{x_0,y_0\},x_0+y_0\}。也挺好理解:要不就是 x0x_0y0y_0 之间直连,要不就是到 11 中转一下,也挺明白。
这个结论虽然可以说是 100% 正确的,但是大家有没有注意到对于 x0=1x_0=1y0=1y_0=1 也一样,我们先假设 x0=1x_0=1)这个题目有一个特殊性质:f(x0,y0)=y0f(x_0,y_0)=y_0(事实上,之所以特殊就在于 11 是所有的正整数的因数之一,但是这里其实有点问题,因为这个时候“去 11 中转一下”的情况就不是 x0+y0x_0+y_0 的代价了而是 y0y_0 的代价)。
这个事实上对于 z2z\ge2 都是成立的,但是这里还要考虑下这个题目的数据范围限制,所以对于 2z10182\le z\le10^{18} 这么做都是没什么问题的。
那么问题又到了对于 1018<z<2×101810^{18}<z<2\times10^{18} 的情况了是吧。
我们有一个很简单的结论,就是只要这两个数其中一个数不是另一个数的因数,那么就一定存在 x0+y0lcm(x0,y0)x_0+y_0\le\operatorname{lcm}(x_0,y_0),所以简单的,我们输出两个比较接近的数就行。但是注意到不能超过 101810^{18},所以还是有点讲究,比如按照这样的写法就没有问题,也不必判定奇偶性,挺方便:cout<<(n+2)/2<<' '<<n-(n+2)/2<<'\n';
代码实现比较丑,不放了。

评论

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

正在加载评论...