贡献一个造数据的对拍程序
  • 板块P3591 [POI2015] ODW
  • 楼主YxYe
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/18 14:49
  • 上次更新2023/11/2 13:05:17
查看原帖
贡献一个造数据的对拍程序
481153
YxYe楼主2023/10/18 14:49
//#pragma GCC optimize(2)
//#pragma GCC optimize(3)
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("inline")
//by YxYe
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define db double
#define fo(i,a,b) for(int i=(a);i<=(b);i++)
#define fp(i,a,b) for(int i=(a);i<(b);i++)
#define de(i,a,b) for(int i=(a);i>=(b);i--)
#define fs(i,u) for(int i=head[u];i;i=nxt[i])
#define pii pair<int, int>
#define pdd pair<db,db>
#define pb push_back
#define fir first
#define sec second
#define ls (now<<1)
#define rs (now<<1|1)
#define mid ((l+r)>>1)
#define lowbit(x) (x&(-x))
using namespace std;
inline ll rd(){
	ll x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(isdigit(ch)){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
const int maxn=1e5+10;
const ll mod=11451419198102353;
int n,b[maxn],fat[maxn],dep[maxn];
int head[maxn],to[maxn<<1],nxt[maxn<<1],cnt=1;
void add_e(int u,int v){
	to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;
}
void dfs(int u,int fa){
	dep[u]=dep[fa]+1;fat[u]=fa;
	fs(i,u){
		int v=to[i];
		if(v==fa)continue;
		dfs(v,u);
	}
}
int lca(int x,int y){
	if(dep[x]<dep[y])swap(x,y);
	while(dep[x]^dep[y])x=fat[x];
	while(x^y)x=fat[x],y=fat[y];
	return x;
}
int main(){
	freopen("data.in","w",stdout);
	n=30;
	cout<<n<<endl;
	fo(i,1,n)printf("1 ");puts("");
	fo(i,2,n){
		int u=i,v=rand()%(i-1)+1;
		cout<<u<<" "<<v<<endl;
		add_e(u,v);
		add_e(v,u);
	}
	dfs(1,0);
	fo(i,1,n){
		b[i]=rand()%n+1;
		while(b[i]==b[i-1])b[i]=rand()%n+1;;
	}
	fo(i,1,n)cout<<b[i]<<" ";puts("");
	fp(i,1,n){
		int l=lca(b[i],b[i+1]);
		int dis=(dep[b[i]]+dep[b[i+1]]-2*dep[l]);
		while(1){
			int x=rand()%dis+1;
			if(dis%x==0){
				cout<<x<<" ";
				break;
			}
		}
	}
	return 0;
}
2023/10/18 14:49
加载中...