社区讨论

最后一个点T了求调

P3540[POI 2012] SQU-Squarks参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjabe21
此快照首次捕获于
2025/11/03 23:18
4 个月前
此快照最后确认于
2025/11/03 23:18
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>

using namespace std;

const int N = 9e4+5;
int n,m,x[N];
vector<int> a;
vector<vector<int> > ans;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>n;
    m=n*(n-1)>>1;
    for(int i=1;i<=m;i++) cin>>x[i];
    sort(x+1,x+m+1);
    a.resize(n+1);
    for(int k=3;k<=n;k++){
        if(x[k]==x[k-1]) continue;
        a[1]=(x[1]+x[2]-x[k])>>1;
        a[2]=x[1]-a[1],a[3]=x[2]-a[1];
        if(a[1]<=0 || a[2]<=0 || a[3]<=0) continue;
        multiset <int> s;
        for(int i=3;i<=m;i++) if(i!=k) s.insert(x[i]);
        int f=0;
        for(int i=4;i<=n && !f;i++){
            a[i]=(*s.begin())-a[1];
            if(a[i]<=0) f=1;
            for(int j=1;j<i && !f;j++){
                if(s.find(a[i]+a[j]) == s.end()) f=1;
                else s.erase(s.find(a[i]+a[j]));
            }
        }
        if(f) continue;
        ans.push_back(a);
    }
    cout<<ans.size()<<endl;
    for(int i=0;i<ans.size();i++){
        for(int j=1;j<=n;j++) cout<<ans[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...