数据生成器&&提示后人
查看原帖
数据生成器&&提示后人
413020
Zvelig1205楼主2022/1/28 16:40

之前的 数据生成器 沉了,我只是捞一下。

提示:

  1. op 输入的时候如果用scanf的话弄成字符串,为啥错不知道,cin错不错不知道。

  2. 调试之后千千万万别忘了关 freopen!多Unaccepted 一次555

Code(数据生成器):

#include<bits/stdc++.h>
using namespace std;
#define reg register
inline int random(int x) { return (rand()%x)*(rand()%x)%x; }
#define maxn 25
int n,fa[1001],cnt=0;
inline int szfind(int x) { return fa[x]==x?x:fa[x]=szfind(fa[x]); }
map<int,string> mp;
int main(){
    srand(time(0));
    freopen("data.in","w",stdout);
    mp[1]="Q",mp[2]="C";
	int n=10,m=5;
    printf("%d %d\n",n,m);
    for(reg int i=1;i<=n;++i) fa[i]=i;
    for(reg int i=1;i<=n;++i) {
        int x=random(n+10);
        while(!x) x=random(n+10);
        cout<<x<<" ";
    } 
    cout<<endl;
    for(reg int i=1;i<n;++i){
        int x=random(n+1),y=random(n+1);
        while(1) { if(szfind(x)!=szfind(y)&&x&&y) break;x=random(n+1),y=random(n+1); }
        printf("%d %d\n",x,y);
        fa[szfind(x)]=szfind(y);
    }
    for(reg int i=1;i<=m;++i){
        int chk=(random(maxn)&1)+1;
        cout<<mp[chk]<<" ";
        int x=random(n+1),y=random(n+1),z=random(n+1);
        if(chk==1){
            while(1) { if(x&&y) break;x=random(n+1),y=random(n+1); }
            cout<<x<<" "<<y<<endl;
        }
        if(chk==2){
            while(1) { if(x&&y&&z) break;x=random(n+1),y=random(n+1),z=random(n+1); }
            cout<<x<<" "<<y<<" "<<z<<endl;
        }
    }
}
2022/1/28 16:40
加载中...