请求加强数据
  • 板块P1142 轰炸
  • 楼主tianAA
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/3 15:42
  • 上次更新2024/11/3 19:29:44
查看原帖
请求加强数据
1229384
tianAA楼主2024/11/3 15:42
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int xmmm=7000+10;

struct p{
    int x, y, d;
    bool operator < (const p &o) const{
        return (x<o.x)||(x==o.x&&y<o.y)||(x==o.x&&y==o.y&&d<o.d);
    }
}k[xmmm];
map<p , int>mp;
int gcd_(int a, int b){
    if(a==0||b==0)return 0;
    while(a%b){
        int t;
        t=a%b;a=b;b=t;
    }
    return b;
}
void mark(int i, int j){
    int m1=k[i].x-k[j].x;
    int m2=k[i].y-k[j].y;
    int t1, t2;
    t1=m1<0?0-m1:m1;
    t2=m2<0?0-m2:m2;
    int t=gcd_(t1, t2);
    if(t)t1/=t, t2/=t;
    if((m1<0&&m2<0)||(m1>0&&m2>0))mp[p{t1, t2, i}]++;
    else if((m1==0&&m2<0)||(m1<0&&m2==0))mp[p{t1, t2, i}]++;
    else mp[p{0-t1, t2, i}]++;
}

signed main()
{
    mp.clear();
    int ans=0;
    int n;cin>>n;
    for(int i=1;i<=n;i++){
        cin>>k[i].x>>k[i].y;
        k[i].d=i;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(i==j)continue;
            mark(i, j);
        }
    }
    for(auto [x, y]:mp){
        ans=max(ans,y+1);
    }
    cout<<ans<<'\n';
    return 0;
}

该代码可ac, 输入 5 5 1 4 1 3 1 2 1 1 1 预期输出 5 实际输出 2

不应该过的

2024/11/3 15:42
加载中...