CF1477C
不要畏惧几何题。
注意到如果
时间复杂度
#include <bits/stdc++.h>
#define int long long
#define rep(i, l, r) for (int i (l); i <= r; ++ i)
#define rrp(i, l, r) for (int i (r); i >= l; -- i)
#define eb emplace_back
#define pii pair <int, int>
#define ls (p << 1)
#define rs (ls | 1)
using namespace std;
constexpr int N = 2.5e6 + 5, B = 35, P = 1e9 + 7;
inline int rd () {
int x = 0, f = 1;
char ch = getchar ();
while (! isdigit (ch)) {
if (ch == '-') f = -1;
ch = getchar ();
}
while (isdigit (ch)) {
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar ();
}
return x * f;
}
int qpow (int x, int y) {
int ret = 1;
for (; y; y >>= 1, x = x * x % P) if (y & 1) ret = ret * x % P;
return ret;
}
int n;
int x[N], y[N];
int p[N];
int dist (int i, int j) {
return (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
}
bool check (int i, int j, int k) {
int a = dist (i, j), b = dist (i, k), c = dist (j, k);
if (b >= (unsigned long long) a + c) return 1;
return 0;
}
int32_t main () {
// freopen ("1.in", "r", stdin);
// freopen ("1.out", "w", stdout);
n = rd ();
rep (i, 1, n) p[i] = i;
rep (i, 1, n) {
x[i] = rd (), y[i] = rd ();
}
// cout<<check(2,3,4)<<endl;
rep (i, 1, n - 2) {
int j = i;
while (check (p[j], p[j + 1], p[j + 2])) {
// cout<<j<<endl;
swap (p[j + 1], p[j + 2]);
-- j;
if (j < 1) break;
}
}
rep (i, 1, n) printf ("%lld ", p[i]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?