求造数据,悬赏解决方案一个,并且洛谷三关 or 大号互关。

link,感觉这道题目质量挺高的,洛谷上没有这道题目,故想要搬运过去,但是本人太菜,不会造数据 qwq,希望巨佬帮帮忙。

注意:本题使用 SPJ,具体要求请看说明提示,并且输出格式中:

之后 n-1 行,每行输出两个以空格隔开的正整数 u,v,表示最小生成树的一条边的两个端点。

这里输出的边没有顺序,端点也没有顺序。

比如:样例输出:

7
1 2
1 3
2 4

这样输出也是对的:

7
2 1
1 3
2 4

这样输出也是对的:

7
1 3
1 2
2 4

标程放在这里:

#include<bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
#define i_ak return
#define ioi  0
#define i_will signed
#define ak main
#define IMO ()
#define int long long
#define double long double
I AK IOI;
const int MAXN=3e6+5;
int p[MAXN],n,sum;
vector<int>pp;
vector<pair<int,int> >g;
void solve(int n) {
    for(int i=2;i<=n;i++){
        if(!p[i]){
            p[i]=i;
            pp.push_back(i);
        }
        for(int it:pp){
            if(i*it>n)break;
            p[i*it]=it;
            if(i%it==0)break;
        }
    }
}
i_will ak IMO{
    cin>>n;
    solve(n);
    for(int i=2;i<=n;i++){
        int p_=p[i];
        int j=i/p_;
        sum+=p_;
        g.push_back({j,i});
    }
    cout<<sum<<endl;
    for(auto it:g)cout<<it.first<<' '<<it.second<<endl;
    i_ak ioi;
}

悬赏解决方案一个,并且洛谷三关 or 大号互关。

树论 求造数据。

有点复杂

@杨荣洋 所以巨佬会造 SPJ 吗?

我都快成专业造数据的了,可惜不会SPJ。www……