首页 > 系统相关 >ACM/XCPC对拍(Linux/Windows)

ACM/XCPC对拍(Linux/Windows)

时间:2024-05-22 11:32:03浏览次数:16  
标签:std ok Windows system ACM beat bad XCPC txt

前言

心血来潮,整理一手c++对拍,分别是Linux下的脚本对拍和windows下的代码对拍

windows对拍

windows下的对拍总共三个文件分别是正解(ok.cpp)错解(bad.cpp)和对拍生成数据的文件,对拍的时候只需要运行生成数据文件(beat.cpp)即可。下面给出三个文件示例代码
正解示例代码:ok.cpp

#include <bits/stdc++.h>
#ifdef LOCAL
#include "algo/debug.h"
#else
#define debug(...) 42
#endif
int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);
    int a, b;
    std::cin >> a >> b;
    std::cout << a + b << "\n";
}

错解示例代码:bad.cpp

#include <bits/stdc++.h>
#ifdef LOCAL
#include "algo/debug.h"
#else
#define debug(...) 42
#endif
std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
int main() {
    std::cin.tie(nullptr)->sync_with_stdio(false);
    int a, b;
    std::cin >> a >> b;
    if (rng() % 10 >= 1) {
        std::cout << a + b << '\n';
    } else {
        std::cout << a + b + 1 << '\n';
    }
}

对拍示例代码:beat.cpp
.\beat是我的对拍存放的目录,可以自行更改,如果存放在你当前开的文件夹下面,代码中的.\beat\都可以不打,默认运行当前文件。

#include <bits/stdc++.h>
int main() {
    #define COMPLILE // 是否重新编译,不需要重新编译注释掉就行了
    #ifdef COMPLILE
        system("g++ -std=c++2a .\\beat\\ok.cpp -o .\\beat\\ok.exe -O3");
        system("g++ -std=c++2a .\\beat\\bad.cpp -o .\\beat\\bad.exe -O3");
    #endif
    for (int i = 0; i < 1000000; ++i) {
        std::cout << "Testcase: " << i << '\n';
        {
            std::ofstream cout("in.txt");
            std::uniform_int_distribution<int> dist(2, 1e9);
            std::mt19937 mt(std::chrono::steady_clock::now().time_since_epoch().count());
            #define rng() dist(mt)
            // std::random_device rd;
            // #define rng() dist(rd)

            cout << rng() % 10 << ' ' << rng() % 10 << "\n";

            cout.close();
        }



        system(".\\beat\\ok.exe < .\\beat\\in.txt > .\\beat\\ok.txt");
        system(".\\beat\\bad.exe < .\\beat\\in.txt > .\\beat\\bad.txt");
        // getchar(); // 单步回车比较
        // system("fc .\\beat\\ok.txt .\\beat\\bad.txt")
        if (system("fc .\\beat\\ok.txt .\\beat\\bad.txt")) { // 自动比较 
            /* 是否将正确结果和错误结果输出在输入文件,方便查看,自行选择是否需要
            system("echo ok: >> .\\beat\\in.txt");
            system("type .\\beat\\ok.txt >> .\\beat\\in.txt");
            system("echo bad: >> .\\beat\\in.txt");
            system("type .\\beat\\bad.txt >> .\\beat\\in.txt");
            */
            puts("WA!!!");
            break;
        }
    }
}

最后放一个我的文件目录结构
![](https://i.postimg.cc/B6pxjxy4/Snipaste-2024-05-22-11-27-13.png =400*300)

标签:std,ok,Windows,system,ACM,beat,bad,XCPC,txt
From: https://www.cnblogs.com/sleeeeeping/p/18205554

相关文章

  • windows基本实用命令
    文件操作dir:查看当前目录下的文件,查看隐藏文件dir/atree:使用树形查看当前目录下的文件和文件夹,以及子目录中的文件和文件夹cd目录名:进入指定目录type文件名:查看文件内容del文件名:删除文件mkdir目录名:创建文件夹rmdir目录名:删除文件夹copy文件名/目录名文......
  • 微软推出新款AI电脑 CEO纳德拉:Windows与Mac真正的对决
    美国当地时间周一,微软推出了名为Copilot+PC(国内为Windows11AIPC)的全新AI电脑类别,微软CEO纳德拉在接受采访时称,这将重新点燃与苹果Mac之间的竞争。纳德拉表示:“苹果在多个方面都表现得极为出色,我们现在正期待Windows与Mac能够重新展开真正意义上的对决。”微软声称,无论是Surf......
  • 在 Windows 上运行,如何以管理员身份运行你的命令提示符或 PowerShell
    在Windows上以管理员身份运行命令提示符或PowerShell是非常简单的过程。以下是具体步骤:以管理员身份运行命令提示符:在开始菜单搜索框中输入cmd,然后从搜索结果中找到并点击命令提示符。右键点击命令提示符图标,然后在弹出的菜单中选择以管理员身份运行。以管理员身份......
  • 控制台+Topshelf实现Windows服务,以及打包
    场景:实现Windows服务,例如TerryService。1服务安装脚本serviceInstall.batcd/d%~dp0echo%date%_%time%>>InstallLog.txtTerryService.exeuninstall>>InstallLog.txtTerryService.exeinstall>>InstallLog.txtscconfigTerryServicetype=interacttype=......
  • windows cmd拉取linux文件夹下的文件,并解压
    前言:nginx静态文件从linux文件夹下拉取,然后放到windows下,并且解压 需要安装putty,用pscp命令del-pull.bat文件,负责删除本地文件夹下所有文件,并且拉取数据@echooffsetlocalsetFOLDER_PATH=C:\Users\admin\Desktop\yaya_nginx\web\echoDeletingfilesinfolder...rm......
  • 突破边界:基于Windows 11的高效渗透测试系统构建
    在这篇文章中,我将向大家推荐一款基于Windows11的渗透测试系统,由一位行业内大佬封装而成。这个名为Windows11PenetrationSuiteToolkit的项目旨在提供一个开箱即用的Windows渗透测试环境,方便安全专家和爱好者进行渗透测试工作。项目地址你可以在GitHub上找到该项目:W......
  • Mysql数据库安装卸载(windows)
    MySQL数据库环境准备MySQL下载、安装、配置、卸载、安装DBMS、使用DBMSMySQL版本及下载MySQL是Oracle的免费的关系型数据库,官网https://www.mysql.com/MySQL8.x新特性性能比5.7快支持NoSQL存储:5.7版本开始提供对NoSQL的支持,8.0.x作了改进窗口函数(新的查询方式)索引......
  • FFMPEG windows版本编译
    安装MSYS2:更新MSYS2系统:pacman-Syu打开正确的终端:?如果您要编译64位版本的FFmpeg)或MSYS2MinGW32-bit(如果您需要编译32位版本)。安装所需组件:?在打开的MinGW-w64终端中,安装编译FFmpeg所需的工具链、开发工具和依赖库:pacman-Sbase-develgitmingw-w64-x86_64-toolchainm......
  • 12代处理器在虚拟机中安装Windows98SE
    最近想把以前写的那个Windows98开始菜单完善一下,装个Windows98来参考参考。项目地址:https://github.com/zhaotianff/WindowsX.git路过的小伙伴可以帮忙点个star。  这里把安装过程分享一下。本文以VMware17虚拟机为例,介绍如何在12代处理器中安装Windows98SE。安装步骤......
  • 配置AutoFacManger.cs
    使用配置AutoFacManger的好处是不用我们像之前一样写一层注入一层,这样自动注入只要我们命名规范的话,就可以实现不在用去Program中手动后注入创建一个类里边写  publicclassAutoFacManger:Autofac.Module{///<summary>///自动注入......