1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int maxn = 1000 + 5; // 为了方便定义数组,直接把数据范围控制好 long long a[maxn], b[maxn], c, d; // a,b表示奶牛计入房间位置,c,d表示座位位置 int flag[maxn]; // 用来标记那些奶牛已经有座位了 int pos; // 记录有座位的奶牛编号 int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i] >> b[i]; for (int j = 1; j <= m; j++) { cin >> c >> d; long long dis = 0; // 计算当前奶牛到座位的距离,用勾股定理(因为只需要比较,所以没有开根号) long long mindis = 1e15; // 记录当前最小奶牛距桌子距离(开始随便赋值,大一些) for (int i = 1; i <= n; i++) { if (flag[i] == 1) continue; // 已有座位,直接跳过 dis = (a[i] - c) * (a[i] - c) + (b[i] - d) * (b[i] - d); // 计算距离,用勾股定理 if (dis < mindis) { // 如果刷新了最小纪录 mindis = dis; // 重新赋最小值 pos = i; // 标记 } } flag[pos] = 1; // 标记,已有座位 } if (n == m) { // 特判没有奶牛无座位 cout << 0; return 0; } for (int i = 1; i <= n; i++) { // 其他情况输出 if (flag[i]) continue; cout << i << endl; } return 0; }
- 1
信息
- ID
- 1584
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 186
- 已通过
- 26
- 上传者