zoukankan      html  css  js  c++  java
  • 对拍

    新知识涌入

    用处: 检验程序正确性

    例 题:

    点击进入题面

    这是一道前缀和的模板题

    我们有2种写法:前缀和 或 暴力

    ac.cpp

    //前缀和
    #include<bits/stdc++.h>
    using namespace std;
    
    long long a[100010], num[100010];
    long long n, k, sum = 0;
    
    int main(){
    	freopen("data.in", "r", stdin);
    	freopen("AC.out", "w", stdout);
    	cin >> n >> k;
    	for(int i = 1; i <= n; i++){
    		cin >> a[i];
    		num[i] = num[i - 1] + a[i];
    	}
    	for(int i = k; i <= n; i++){
    		sum += num[i] - num[i - k];
    	}
    	cout << sum << endl;
    	return 0;
    }
    

    check.cpp

    //暴力
    #include <bits/stdc++.h>
    using namespace std;
    
    long long n, k, a[100009], ans;
    
    int main(){
    	freopen("data.in", "r", stdin);
    	freopen("check.out", "w", stdout);
        cin >> n >> k;
        for(int i = 1; i <= n; i++)	cin>>a[i];
        for(int i = 1; i <= n - k + 1; i++){
            for(int j = i; j <= i + k - 1; j++){
                ans += a[j];
            }
        }
        cout << ans << endl;
        return 0;
    }
    

    suiji.cpp

    //按照题目要求产生随机数据
    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        freopen("data.in", "w", stdout);
        srand(time(NULL));
        long long n = rand()%100000 + 1;
        long long m = rand()%n + 1;
        printf("%lld %lld
    ", n, m);
        for(int i = 1; i <= n; i++)	printf("%lld ", 1ll*rand()%100000000);
        printf("
    ");
        return 0;
    }
    

    记事本写 对拍.bat(后缀名改成.bat!!!)

    :loop
    	@echo off
    	suiji.exe
    	AC.exe
    	check.exe
    	fc AC.out check.out
    if not errorlevel 1 goto loop
    pause
    :end
    

    原理

    suiji.cpp 按照题目意思产生随机数据,我们保证暴力代码虽然速度慢但是答案一定正确,我们将产生的数据在2个程序中运行,进行比对。如果返回的结果相同:

    如果不同,说明我们优化后的前缀和程序有问题:

    没有未来的未来不是我想要的未来
  • 相关阅读:
    如何有效的写算法题的几个小tips
    题目
    记录加入博客园,申请开通cnblog
    关于套接字socket程序参数设置
    int main (int argc, const char * argv[0])及指针数组与数组指针
    sleep函数
    signal函数
    C htonl()函数
    位域unsigned char a:4
    关于TCP和UDP的一个理解
  • 原文地址:https://www.cnblogs.com/Little-Turtle--QJY/p/13933832.html
Copyright © 2011-2022 走看看