zoukankan      html  css  js  c++  java
  • 对拍和随机数据生成


    对拍

    // Windows系统对拍程序
    #include<cstdlib>
    #include<cstdio>
    #include<ctime>
    int main() {
        for (int T = 1; T <= 10000; T++) {
            // 自行设定适当的路径
            system("C:\random.exe");
            // 返回当前程序已经运行的CPU时间,windows下单位ms,类unix下单位s
            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");
                // 程序立即退出,此时data.in即为发生错误的数据,可人工演算、调试
                return 0;
            }
            else {
                printf("Accepted, 测试点 #%d, 用时 %.0lfms
    ", T, ed - st);
            }
        }
    }
    

    随机数据生成

    main 函数内内容

    srand((unsigned)time(0));

    生成 0~N 整数

    int rnd(int N) {return rand()*rand()%N;}

    生成 l~r 整数

    int rnD(int l,int r) {return l+rnd(r-l+1);}

    生成随机树

    for(int i=2; i<=n; ++i) {
        int fa = rnD(1,i-1);
        int val = rnD(minval, maxval);
        printf("%d %d %d
    ", i, fa, val);
    }
    

    生成随机图

    要求无向, 联通, 不含重边、自环

    pair<int, int> e[1000005]; // 保存数据
    map< pair<int, int>, bool > h; // 防止重边
    // 先生成一棵树,保证连通
    for (int i = 1; i < n; i++) {
        int fa = rnD(1,i);
        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 = rnD(1,n), y = rnD(1,n);
        } 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
    ", e[i].first, e[i].second);
    
  • 相关阅读:
    selenium 难定位元素、时间插件
    列表生成式
    三元表达式
    监控日志
    非空即真
    深拷贝浅拷贝
    元组
    list字典嵌套
    2021
    布尔类型
  • 原文地址:https://www.cnblogs.com/tztqwq/p/13761618.html
Copyright © 2011-2022 走看看