30分求助
查看原帖
30分求助
331721
jerryee楼主2022/12/6 18:55
#include <cstdio>
#include <cmath>
using namespace std;
inline void read(int &x){
    int w = 0;x=0;char c=getchar();
    while(c<'0'||c>'9')w|=c=='-',c=getchar();
    while(c>='0'&&c<='9')x=x*10+(c^48),c=getchar();
    x=w?-x:x;
}
double get(int x, int y, int z, int w) {return sqrt(((double)x - (double)z) * ((double)x - (double)z) + ((double)y - (double)w) * ((double)y - (double)w));}

struct pos {
    int x, y;
    bool sur=false;
} a[1005];
int n,k,t,ans=0;
int main(){
    read(n);read(t);read(k);
    for (int i = 1; i <= n; ++i)read(a[i].x),read(a[i].y);
    for (int i = 1; i <= k; ++i) {
        int x, y;
        read(x);read(y);
        for (int j = 1; j <= n; ++j)
            if (a[j].x == x && a[j].y == y) {
                a[j].sur = true;
                break;
            }
    }
    for (int i = 1; i <= t; ++i) {
        int x, y;
        read(x);read(y);
        double maxDist = -1;
        int cnt = 0;
        for (int j = 1; j <= n; ++j)
            if (get(x, y, a[j].x, a[j].y) > maxDist) {
                cnt = j;
                maxDist = get(x, y, a[j].x, a[j].y);
            }
        if (a[cnt].sur) ++ans;
    }
    printf("%d",ans);
}

看了题解之后还是不明白,抄了一遍也不知道问题出在哪。

2022/12/6 18:55
加载中...