日期:2025年4月2日
ZeroJudge 題目連結:h658. 捕魚 (Fishing)
解題想法
用距離平方判斷是否在範圍內即可,不需要開根號。
Python 程式碼
使用時間約為 19 ms,記憶體約為 3.3 MB,通過測試。
import sys
for line in sys.stdin:
x, y = map(int, line.split()) # 漁夫的座標
n = int(input()) # n 筆資料
ax, ay, d = 0, 0, float('inf') # 最接近的魚群座標、距離的平方
for _ in range(n): # 執行 n 次
xi, yi = map(int, input().split()) # 魚群座標
di = (x - xi)**2 + (y - yi)**2 # 距離的平方
if di < d: # 如果距離較近,更新 ax, ay, d
ax, ay, d = xi, yi, di
print(ax, ay)
C++ 程式碼
使用時間約為 2 ms,記憶體約為 92 kB,通過測試。
#include <cstdio>
using namespace std;
int main() {
int x, y; // 漁夫的座標
while(scanf("%d %d", &x, &y) != EOF) {
int n; scanf("%d", &n); // n 筆資料
int ax = 0, ay = 0, d = 1000000000; // 最接近的魚群座標、距離的平方
for(int i=0; i<n; i++) { // 執行 n 次
int xi, yi; scanf("%d %d", &xi, &yi); // 魚群座標
int di = (x-xi)*(x-xi) + (y-yi)*(y-yi); // 距離的平方
if (di < d) { // 如果距離較近,更新 ax, ay, d
ax = xi; ay = yi; d = di;
}
}
printf("%d %d\n", ax, ay);
}
return 0;
}
沒有留言:
張貼留言