由於寫歐拉函數因此學會的簡單對拍

1.隨機生成數據:數據結構

1.隨機生成一個數:dom

很是簡單啦也是,這裏的mod取決於你要生成的數最大想要多大;測試

int random(int mod){
    return (long long)rand()*rand()%mod;
}

int main(){
    freopen("data.in","w",stdout);
    srand((unsigned)time(0));
    printf("%d",random());
    return 0;
}

2.隨機生成整數序列:spa

隨機生成n<=10e5個絕對值在10e9內的整數code

int random(int mod){
    return (long long)rand()*rand()%mod;
}

int main(){
    freopen("data.in","w",stdout);
    srand((unsigned)time(0));
    int n=random(100000)+1;
    int m=1000000000;
    for(int i=1;i<=n;i++){
        a[i]=random(2*m+1)-m;
        printf("%d ",a[i]);
    }
}

3.隨機生成區間列:blog

隨機生成m個[1,n]的子區間,這些區間可做爲數據結構題目的操做序列;io

int random(int mod){
    return (long long)rand()*rand()%mod;
}

int main(){
    freopen("data.in","w",stdout);
    srand((unsigned)time(0));
  
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",l,r); } }

4.隨機生成樹:編譯

隨機生成一棵n個點的樹,用n個點n-1條邊的無向圖的形式輸出,每條邊附帶一個1e9之內的正整數權值;class

int random(int mod){
    return (long long)rand()*rand()%mod;
}

int main(){
    freopen("data.in","w",stdout);
    srand((unsigned)time(0));
    for(int i=2;i<=n;i++){
        int fa=random(i-1)+1;
        int val=rand(1000000000)+1;
        printf("%d %d %d\n",fa,i,val);
    }
}

 5.隨機生成圖:map

隨機生成一張n個點m條邊的無向圖,圖中不存在重邊,自環,且必須聯通。保證5≤n≤m≤n*(n-1)/4≤1e6;

int random(int mod){
    return (long long)rand()*rand()%mod;
}

int main(){
    freopen("data.in","w",stdout);
    srand((unsigned)time(0));
    pair<int,int> e[1000005];
    map<pair<int,int>,bool> h;
    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;
    }
    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);
    }
}

而後寫一套暴力命名爲bf.cpp,一套你認爲的正解命名爲sol.cpp,而後將其編譯,注意要寫freopen,同時放到一個文件夾下面(應該吧)(這裏直接放到C:了),而後運行如下程序:

無論怎樣必定要保存的運行:

#include<cstdlib>
#include<cstdio>
#include<ctime>
int main(){
    for(int T=1;T<=次數;T++) {
        system("C:\\random.exe");
        double st=clock();
        system("C:\\sol.exe");
        double ed=clock();
        system("C:\\bf.exe");
        if(system("fc C:\\data.out C:\\data.ans")) {
            puts("Wrong Answer"); 
            return 0;
        }
        else printf("Accepted,測試點#%d,用時 %.0lfms\n",T,ed-st);
    }
}

 end-

相關文章
相關標籤/搜索