zoukankan      html  css  js  c++  java
  • [OI神器]对拍

    前言

    因为NOI系列赛制的毒瘤,很多人都没有真正展现自己的实力。(本校tly,wk大佬痛失Au
    而对拍,通过对比你造的数据,看你两份不同代码跑出来的结果,可以调错。能缓解这一问题。不过自己造的数据用那个垃圾随机数,数据都比较水
    有的人就说了:“我打不来正解只会暴力那你这有啥用呢?”
    答:对比不同的的暴力代码看暴力打错没有

    实现

    对拍程序

    建一个txt文件,后缀名改为bat,进行编辑
    一般来说对拍程序放在源代码那个文件夹,免得还要多写源代码位置
    然后背就完事了

    @echo off
    :loop
    	生成数据代码名.exe > 数据名.in
    	AC代码名.exe < 数据名.in > AC.out
    	WA代码名.exe < 数据名.in > WA.out
    	fc AC.out WA.out
    if not errorlevel 1 goto loop
    pause
    goto loop
    

    基本就是这个格式
    然后再放一个真正可以运行的代码

    @echo off
    :loop
    	3.exe > 1.in
    	2.exe < 1.in > AC.out
    	1.exe < 1.in > WA.out
    	fc AC.out WA.out
    if not errorlevel 1 goto loop
    pause
    goto loop
    

    稍稍解释一下
    第一行关掉输入显示,避免一些无意义的东西
    第二行就是一个标记点,loop你想改成啥就改成啥(后面一并要改)
    fc是一个比较函数
    errorlevel是一个返回值,如果不一样就是1,否则是0。
    不一样就暂停了,一样继续对拍

    数据生成

    这东西说简单也简单,说难也难,要看到底是什么题目。有些题数据确实挺难生成的
    反正记住srand(time(0))就对了
    但是有一种好像比较高端的操作,用windows自带的随机数,这样的好处是生成数据更快,而不是一秒一次
    而原来的对拍程序要加一个%random%

    生成数据代码名.exe %random% > 数据名.in
    

    生成数据的代码

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<sstream>//必须的头文件
    #include<algorithm>
    #include<queue>
    #include<map>
    #include<queue>
    #include<set>
    #include<ctime>
    using namespace std;
    stringstream s1;
    int main(int argc,char *argv[]){
    	int seed = time(0);
    	if (argc > 1){
    		s1.clear();
    		s1 << argv[1];
    		s1 >> seed;
    	}
    	srand(seed);
    	//前面不能修改,特别是参数
    	int a = rand();
    	int b = rand();
    	printf("%d %d
    ",a,b);
    }
    

    当然如果你的暴力实在太慢,这个也没啥用

    结语

    最后提醒一点
    代码都不要打freopen,对拍之前先编译
    当然对于我这种只会打暴力的辣鸡,能用的好像并不多

  • 相关阅读:
    免登陆 安全密钥验证
    第五节
    selinux
    scp
    Linux网卡绑定
    HDFS
    搭建软件仓库
    命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
    delphi利用指针,结构或component存储数据表数据
    Delphi中的ObjectList简单用法一则
  • 原文地址:https://www.cnblogs.com/lover-fucker/p/13566650.html
Copyright © 2011-2022 走看看