码迷,mamicode.com
首页 > 其他好文 > 详细

关于 对拍 的一些认识

时间:2020-07-06 13:09:41      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:+=   lock   操作   效率   for   linux   while   文件名   exe   

对拍是用来检验自己写的正解的正确性&效率的东西。

操作说明:

1.准备好自己写的暴力(b.cpp 和 b.exe)和正解(z.cpp 和 z.exe)。

2.写一个造数据的程序(shuju.cpp 和 shuju.exe),根据题目要求自己造。

3.写一个对拍程序(duipai.cpp 和 duipai.exe),大部分情况下不用改动,如下.

#include<bits/stdc++.h>
using namespace std;
long long i;
int main()
{
    while(1)
    {
        system("shuju.exe > shuju.txt");
        double t1=clock();
        system("b.exe < shuju.txt > b.txt");
        double t2=clock();        
        system("z.exe < shuju.txt > z.txt");
        double t3=clock();
        if(system("fc b.txt z.txt"))break;
        cout<<"AC: "<<++i<<" "<<t2-t1<<" "<<t3-t2<<<endl;    
    }
    return 0;
}

注意要将上面那些东西放到同一个目录下。

4.运行duipai.exe.

下面举一个简单的例子,以a*b problem为例。

z.cpp

#include<bits/stdc++.h>
using namespace std;
long long a,b;
int main()
{
    cin>>a>>b;
    cout<<a*b;
    return 0;
}

b.cpp

#include<bits/stdc++.h>
using namespace std;
int a,b,ans;
int main()
{
    cin>>a>>b;
    for(int i=0;i<=b;++i)ans+=a;
    cout<<ans;
    return 0;
}

duipai.cpp

```cpp
#include<bits/stdc++.h>
using namespace std;
long long i;
int main()
{
    while(1)
    {
        system("shuju.exe > shuju.txt");
        double t1=clock();
        system("b.exe < shuju.txt > b.txt");
        double t2=clock();        
        system("z.exe < shuju.txt > z.txt");
        double t3=clock();
        if(system("fc b.txt z.txt"))break;
        cout<<"AC: "<<++i<<" "<<t2-t1<<" "<<t3-t2<<<endl;    
    }
    return 0;
}

注意事项:

1.4个程序都要放到同一个目录下

2.对拍的文件名不要取名fc

3.windows下和linux下生成的随机数范围不一样

4.生成数据的文件不要忘记写srand(time(0))

关于 对拍 的一些认识

标签:+=   lock   操作   效率   for   linux   while   文件名   exe   

原文地址:https://www.cnblogs.com/wljss/p/13254153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!