HDOJ 5762 MAP

    xiaoxiao2026-05-20  11

    先用map判重 然后用map记录距离如果再次出现就退出循环 #include<bits/stdc++.h> #define w(a) while(a) #define sf scanf #define pf printf #define b begin() #define e end() #define forup(a,b) for(i=a;i<=b;i++) #define fordo(a,b) for(i=a;i>=b;i--) using namespace std; const int maxn=100000+20; struct point { int x;int y; bool operator <(const point& other) const { if (x< other.x) { return true; } return false; } }p[maxn]; int sp(point a,point b) { return abs(a.x-b.x)+abs(a.y-b.y); } int main() { int T; sf("%d",&T); w(T--) { //cout<<INT_MAX<<endl; map<point,int>visit; map<int,int>fuck; int n,m,i,cur=1,flag=0; sf("%d%d",&n,&m); forup(1,n) { point tem; scanf("%d%d",&tem.x,&tem.y); if(visit[tem]==0) { visit[tem]=1; p[cur++]=tem; } } sort(p+1,p+cur); forup(1,cur-1) { for(int j=i+1;j<=cur-1;j++) { int dist=abs(p[i].x-p[j].x)+abs(p[i].y-p[j].y); if(fuck[dist]==0) { fuck[dist]=1; } else { flag=1; break; } } if(flag) break; } if(flag) puts("YES"); else puts("NO"); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1309864.html
    最新回复(0)