zoukankan      html  css  js  c++  java
  • [对拍模板]

    今天又是军训(难受)

    照例晚上跑到了电脑室

    今天学了对拍

    记录一下

    先随便口胡了一个题: 求一个数列中连续的数的最大和

    先写一个暴力程序(要保证正确)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    long long  n,a[100000];
    long long  ans,sum[100000];
    int main()
    {
        freopen("QWQ.in","r",stdin);
        freopen("QWQ.ans","w",stdout);
        cin >> n ;
        for(long long i = 1;i <= n; i++) cin>>a[i],sum[i] = sum[i-1] + a[i];
        for(long long i = 1; i<= n; i++)
        for(long long j = i-1; j >= 0; j--)
        {
            ans = max(ans,sum[i] - sum[j]);
        }
        cout << ans;
    }
    ans

    再写一个算法程序(验证正确性)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    long long minn=0x3f3f3f,n,a[1000000],sum[1000000],ans;
    int main()
    {
       freopen("QWQ.in","r",stdin);
       freopen("QWQ.out","w",stdout);
       scanf("%lld",&n);
       for(long long i = 1; i <= n ; i++)
       {
           scanf("%lld",&a[i]);
           sum[i] = sum[i-1] + a[i];    
       }    
       for(long long i = 0; i <= n; i++)
       {
              minn = min(minn,sum[i]);
              ans = max(ans,sum[i]-minn);
       }
       cout << ans;
    } 
    want

    再写一个生成数据的程序 用rand()来生成

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        srand(time(0));
        freopen("QWQ.in","w",stdout);
        long long t = rand()%1000; 
        cout << t << endl;
        for(long long i = 1;i <= t ; i++)
        {
            if(rand()%1000<=t )printf("%d ",rand());
            else printf("%d ",-rand());    //生成负数的一个小技巧 
        } 
        return 0;
    }
    data

    再写一个用来比对的程序

    #include<iostream>
    #include<cstdio>
    #include<windows.h>
    using namespace std;
    int main()
    {
       int t = 0;
       while(1)
       {
           system("data");//运行生成数据程序 
           system("ans");//运行暴力 
        system("want");//运行算法程序 
        if(system("fc QWQ.ans QWQ.out")) break;//比对 (fc是比较两个文件的意思)    
        cout<<endl<<++t;
       }    
        printf("error!");
        return 0;   
    } 
    test

    然后运行就可以了

    对拍还是很有用的一个技巧的

    比赛场上很重要

  • 相关阅读:
    linux查看日志文件内容命令tail、cat、tac、head、echo
    改变自己的128种方法,教你变得更优秀!
    php 23种设计模式
    Swoole消息推送
    PHP 出现 502 解决方案
    【centos7】添加开机启动服务/脚本
    curl 参数配置详解
    i系列标准-互联网周刊
    MySQL 设计与开发规范2
    Cocos Creator webviw网页置顶增加返回键的方法
  • 原文地址:https://www.cnblogs.com/dixiao/p/13556172.html
Copyright © 2011-2022 走看看