暴力,目标75分,为什么只有10pts?
查看原帖
暴力,目标75分,为什么只有10pts?
560112
__Alexander__楼主2024/10/1 09:34
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct node{
    int num,vis;
};
node x[40005];
bool cmp(node x,node y){
    return x.num<y.num;
}
int mp[400005][5];
vector<int> s[400005];
int main(){
    // freopen("test.in","r",stdin);
    // freopen("test.out","w",stdout);
    cin>>n>>m;
    for (int i=1;i<=m;i++){
        cin>>x[i].num;
        x[i].vis=i;
        s[x[i].num].push_back(i);
    }
    stable_sort(x+1,x+m+1,cmp);
    for (int i=1;i<=m;i++){
        for (int j=i+1;j<=m;j++){
            if (x[i].num>=x[j].num) continue;
            if (x[j].num-x[i].num%2==1) continue;
            for (int k=j+1;k<=m;k++){
                if ((x[j].num-x[i].num)*3>=(x[k].num-x[j].num)){
                    continue;
                }
                if (x[j].num==x[k].num) continue;
                // for (int l=k+1;l<=m;l++){
                //     if (x[k].num==x[l].num) continue;
                //     if (x[j].num-x[i].num!=(x[l].num-x[k].num)*2) continue;
                //     mp[x[i].vis][1]++;
                //     mp[x[j].vis][2]++;
                //     mp[x[k].vis][3]++;
                //     mp[x[l].vis][4]++;
                // }
                int hi=(x[j].num-x[i].num)/2+x[k].num;//d
                if (s[hi].size()==0) continue;
                if (hi<=x[k].num) continue;
                if ((hi-x[k].num)*2!=(x[j].num-x[i].num)) continue;
                mp[x[i].vis][1]++;
                mp[x[j].vis][2]++;
                mp[x[k].vis][3]++;
                for (int is=0;is<s[hi].size();is++){
                    mp[s[hi][is]][4]++;
                }
                // printf("%d %d %d %d\n",x[i].vis,x[j].vis,x[k].vis,hi);
            }
        }
    }
    for (int i=1;i<=m;i++){
        for (int j=1;j<=4;j++){
            cout<<mp[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

record

2024/10/1 09:34
加载中...