1 条题解

  • 1
    @ 2025-3-15 20:22:54

    显然 d,φ0d,\varphi \ne 0。考虑一次移动中轨迹的斜率 k=tanφφk=\dfrac{\tan \varphi}{\varphi}。画图可知,当 $\varphi \in (-\dfrac{\pi}{2},0) \cup (0,\dfrac{\pi}{2})$ 时,k(1,+)k \in (1,+\infty)

    也就是说,如果直线 ABAB 的斜率 kAB>1k_{AB}>1 且存在,那么就可以从 AA 一次性移动到 BB

    很明显,如果我们第一次移动时选择 d=10100,φ=π4d=10^{100},\varphi=\dfrac{\pi}{4},那么一次移动后的位置 XX 与终点 YY 之间的斜率将会极其接近 4π\dfrac{4}{\pi},显然可以从 XX 一次性移动到 YY。整个过程一共移动了 22 次,所以答案总是不超过 22

    综上,本题的结论是(设 PP 为起点,QQ 为终点):

    • PPQQ 重合时答案为 00
    • kPQ>1k_{PQ}>1 且存在时答案为 11
    • 以上两个条件都不满足时答案为 22
    #include <bits/stdc++.h>
    using namespace std;
    #define y1 Y1
    int steps(int x1, int y1, int x2, int y2)
    {
    	if (x1 == x2 && y1 == y2) return 0;
    	if (x2 > x1 && y2 - y1 > x2 - x1) return 1;
    	if (x1 > x2 && y1 - y2 > x1 - x2) return 1;
    	return 2;
    }
    int main()
    {
    	freopen("tangent.in", "r", stdin);
    	freopen("tangent.out", "w", stdout);
    	int x1, y1, x2, y2;
    	cin >> x1 >> y1 >> x2 >> y2;
    	cout << steps(x1, y1, x2, y2) << endl;
    	return 0;
    }
    

    信息

    ID
    153
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    17
    已通过
    4
    上传者