int a[N];intrandom(int x){return(ll)rand()*rand()% x;}intmain(){freopen(".in","w",stdout);srand((unsigned)time(0));//生成 n 个范围为 -m ~ m的数 int n =random(1000000)+1;printf("%d ", n);int m =1000000;for(int i =1; i <= n; i++){
a[i]=random(2* m +1)- m;printf("%d ", a[i]);}return0;}
随机生成区间列
int m, n;intrandom(int x){return(ll)rand()*rand()% x;}intmain(){freopen(".out","w",stdout);srand((unsigned)time(0));//生成 m 个 [1, n] 的子区间 sc(n);sc(m);for(int i =1; i <= m; i++){int l =random(n)+1;int r =random(n)+1;if(l > r)swap(l, r);printf("%d %d\n", l, r);}return0;}
随机生成树
int n;intrandom(int x){return(ll)rand()*rand()% x;}intmain(){freopen(".out","w",stdout);srand((unsigned)time(0));//生成一棵 n 个点的树, 每条边权值为 1e9范围内整数
cin >> n;for(int i =2; i <= n; i++){int fa =random(i -1)+1;int val =random(1000000000)+1;printf("%d %d %d\n", fa, i, val);}return0;}
随机生成图
pair <int,int> e[1000005];//保存数据
map <pair <int,int>,bool> h;//防止重边 int n, m;intrandom(int x){return(ll)rand()*rand()% x;}intmain(){freopen(".out","w",stdout);srand((unsigned)time(0));//随机生成一张 n 个点 m 条边的无向图,无重边、自环,且必须连通 //5 <= n <= m <= n * (n - 1) / 4 <= 1e6
cin >> n >> m;//先生成一棵树,保证连通for(int i =1; i < n; i++){int fa =random(i)+1;
e[i]=make_pair(fa, i +1);
h[e[i]]= h[make_pair(i +1, fa)]=1;}//再生成剩余的 m - n + 1 条边for(int i = n; i <= m; i++){int x, y;do{
x =random(n)+1;
y =random(n)+1;}while(x == y || h[make_pair(x, y)]);
e[i]=make_pair(x, y);
h[e[i]]= h[make_pair(y, x)]=1;}//随机打乱,输出random_shuffle(e +1, e + m +1);for(int i =1; i <= m; i++)printf("%d %d\n", e[i].first, e[i].second);return0;}
对拍
intmain(){for(int t =1; t <=10000; t++){//自行设定适当的路径system("random.exe");//随机数据构造double st =clock();system("group.exe");//正解double ed =clock();system("group_1.exe");//暴力if(system("fc group.out group_1.ans")){printf("Wrong Answer");return0;}elseprintf("Accepted, 测试点 #%d, 用时 %.0lfms\n", t, ed - st);}return0;}