1 条题解
-
0
自动搬运
来自洛谷,原作者为

___w
**搬运于
2025-08-24 22:41:16,当前版本为作者最后更新于2023-06-07 16:02:34,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P8668 [蓝桥杯 2018 省 B] 螺旋折线
题意简述
- 对于整点 ,定义它到原点的距离 是从原点到 的螺旋折线段的长度。
- 给出整点坐标 ,求 。
题目分析
做到这题看到这个大蚊香瞬间蚌埠住了,这题
也就随随便便分类讨论罢了。
如图所示,我们可以将这个“大蚊香”分为上下左右四个部分。定义 。
我们发现,像类似 (其中 )的值为左右部分的和和上下部分的和,为:
。
那么我们就可以分别讨论点 分别位于哪个部分,再对 增减。
当 且 时(即上部分),。
当 且 时(即下部分),。
当 且 时(即右部分),。
当 且 时(即左部分),。
这些结论可以自己在草稿纸上推一推,这里就不展开详细说明了。有了结论,代码也就简单了。
代码
记得开
long long。#include <bits/stdc++.h> using namespace std; long long x, y, n, d; int main() { cin >> x >> y; n = max(abs(x), abs(y)), d = 2*n*(2*n+1); if (y >= 0 && abs(x) <= y) cout << d-3*n+x;//上部分 else if (y < 0 && y < x && x <= -y) cout << d+n-x;//下部分 else if (x >= 0 && abs(y) <= x) cout << d-n-y;//右部分 else if (x < 0 && x < y && y <= -x) cout << d-5*n+y;//左部分 return 0; }
- 1
信息
- ID
- 8126
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者