简单的对拍

  在算法竞赛中,我们常用对拍来初步检验程序。

  网上也有其它的关于对拍的教程,但是任性的我还是要自己写一篇教程。 

   666

 

  首先,我们要知道我们是用一个叫做” 批处理文件(.bat)“的东西来处理这个问题。点击初步了解bat

     不过不必深究这个,因为我们只用其中一小部分。

  那么,我的基本思路是:

              ①先得到测试数据及答案(可用符合题意的随机数程序);

              ②打开标准程序(或你的暴力程序)和你的程序并生成答案;

              ③比较文件,一致则循环比较,否则输出文件不同点;

  当然,你可以添加一些功能,如:综合时间和正确率给程序评分等(我就懒得写了)。

  先用一个例子来示范一下

    就用2016年noip第一天的第一题, 点击查看题目

    接着写我们的bat文件了(建议比赛开场前时写)

    实所谓的批处理文件,就是把DOS命令先写下来。所以,就用记事本写就行,然后后缀改成.bat。点击了解怎么改后缀

  我写的bat:

@echo off    ::关回显,不必深究
:sign        ::标识符,与C语言的用法大致一样
rand     ::一个用于生成输入文件的随机数程序 biggodsans ::执行大神与我的程序 myans fc biggodsans.out myans.out ::比较文件
if errorlevel 0 goto sign ::如果文件一样的话就跳转回sign处继续处理,否则将在屏幕显示错误信息(该行一定要连一起写)

 其实重点在第六行,这个bat就是用来检验你的答案是否和标准答案完全一致(如有格式要求的题目)。

  所以,只写一行也行。

  用两个测试数据说明问题。点击获取测试数据

  修改一下文件名,简单测试文件比较

@echo off
fc biggodsans.out myans.out
pause          ::可能会一闪而过,起暂停屏幕作用

用toy6.in所得结果

用toy16.in得到错误信息

它会显示不同处的上下文(我这里是程序没有输出)

 大概就是这样了

 

 


一个华丽的分割线,以下是我和大神的代码

 

 

 

  我的代码是()

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<string>
 4 using namespace std;
 5 string name[100006];
 6 bool inorout[100006];               //第i个小人的朝向,false表示向内 
 7 int n,m;
 8 int i,j,ai,si;
 9 int nowp=1;
10 int main()
11 {
12     freopen("toy.in","r",stdin);
13     freopen("myans.out","w",stdout);
14     scanf("%d%d",&n,&m);
15      for(i=1;i<=n;++i)
16              { 
17                      scanf("%d",&j);
18                      inorout[i]=(j==0?false:true);          
19                      cin>>name[i];
20                      } 
21                  while(m--)              //就是一个简单的模拟
22                  {                
23                   scanf("%d%d",&ai,&si);
24                   if(inorout[nowp]==(bool)ai)    nowp=nowp-si+n;      //显然朝向和向左右数有关
25                   else                           nowp+=si;
26                   nowp=nowp%n;          //注意:它是个圈!!!       
27              }
28     cout<<name[nowp];   
29     return 0;
30 }
31     

 

我以为我完全正确。然而,我得了90分...

我终于知道题目里的mengbier是谁了      尴尬

比赛后我找到大神的答案

 1 #include<cstdio>    //大神的代码,膜拜ing...
 2 const int N=1e5+5,L=11;
 3 int n,q,i,a[N],x;
 4 char s[N][L];
 5 int read(){
 6     char c=getchar();int k=0;for (;c<48||c>57;c=getchar());
 7     for (;c>47&&c<58;c=getchar()) k=(k<<3)+(k<<1)+c-48;return k;
 8 }
 9 int main(){
10     freopen("toy.in","r",stdin);
11     freopen("biggodsans.out","w",stdout);
12     for (n=read(),q=read(),i=0;i<n;i++){
13         a[i]=read();scanf("%s",s[i]);
14     }
15     for (x=0;q--;){
16         int opt=read()^a[x],k=read();
17         if (opt) x=(x+k)%n;
18         else x=(x-k+n)%n;
19     }
20     printf("%s",s[x]);
21 }

 

转载于:https://www.cnblogs.com/callmebg/p/6347892.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 之 OpenCvSharp 大图找小图(案例版)

要说跟AI扯上啥关系&#xff0c;估计只有库本身了&#xff0c;但是&#xff0c;这个大图搜小图功能还是不错的&#xff0c;有喜欢的可以试试。我主要用的场景是&#xff0c;具体的某个界面为大图&#xff0c;界面的某个图标为小图&#xff0c;或者&#xff0c;整个桌面为大图&a…

SaaS应用的十二要素

简介 如今&#xff0c;软件通常会作为一种服务来交付&#xff0c;它们被称为网络应用程序&#xff0c;或软件即服务&#xff08;SaaS&#xff09;。12-Factor 为构建如下的 SaaS 应用提供了方法论&#xff1a; 使用标准化流程自动配置&#xff0c;从而使新的开发者花费最少的…

路由器与交换机区别

路由器与交换机区别 近日&#xff0c;在回答知道网友提问的时候&#xff0c;发现很多朋友不知道路由器与交换机的不同&#xff0c;常常问一些看起来有点可笑的问题。比如路由器同时登陆两个账号&#xff0c;所以今天写下这篇经验&#xff0c;科普一下路由器的功能和交换机的功能…

【QGIS入门实战精品教程】1.2:QGIS与ArcGIS的区别和联系

「刘一哥GIS」系列专栏《QGIS入门实战精品教程(配套案例数据)》目录 以下是GISGeography官方给出的两者之间的27点比较(译): 官方网址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容纳更多的数据格式 ArcGIS没有支持所有的数据格式,毫无疑问,QGIS在处…

押注.NET 是件好事

作者 | Bryan Costanich译者 | 明知山策划 | 褚杏娟作为一个在.NET 上构建了不止一个流行平台的人&#xff0c;我经常被问到它的相关性&#xff0c;以及它是不是一个值得投入的生态系统。这个问题在旧金山湾区的技术世界里尤为流行&#xff0c;这里的技术潮流就像四季一样变更交…

8-12 canvas专题-阶段练习一(上)

8-12 canvas专题-阶段练习一&#xff08;上&#xff09; 1 <!DOCTYPE html>2 <html lang"zh-cn">3 <head>4 <meta charset"UTF-8">5 <title>8-12 课堂演示</title>6 </head>7 <style type"text…

【QGIS入门实战精品教程】2.2:QGIS软件的下载与安装(Windows)

文章目录 一、QGIS下载二、QGIS安装​一、QGIS下载 QGIS软件官网下载地址:https://www.qgis.org/en/site/ 进入官网之后,点击【Download Now】进入下载页面: 选择对应的版本进行下载: 开始下载:

Linux sudo找不到命令:修改sudo的PATH路径

为什么80%的码农都做不了架构师&#xff1f;>>> sudo有时候会出现找不到命令&#xff0c;而明明PATH路径下包含该命令&#xff0c;让人疑惑。其实出现这种情况的原因&#xff0c;主要是因为当 sudo以管理权限执行命令的时候&#xff0c;linux将PATH环境变量进行了重…

快速判断站点是否存活的 3 种编程实现

前言如何知道外部站点是否正在运行&#xff1f;如果使用浏览器&#xff0c;直接访问对应站点即可。那么&#xff0c;使用 C# 以编程方式&#xff0c;如何实现呢&#xff1f;GET 请求首先想到的&#xff0c;就是使用 HttpClient 向该站点发送 HTTP 请求&#xff0c;并检查返回状…

【数据结构与算法】拓扑排序问题C语言实现

拓扑排序是有向无环图的一种应用,在实际生活中用的很多。 比如GIS专业的课程设计,许多课程需要前置课程要求,也就是说没上过A课程、则不可能直接去学B课程,画个图表就是: 同理,我们教材中的范例:穿衣服的过程也是一个拓扑排序问题,如下表: 有关这个拓扑排序的模型构造…

[转]2020年排名前20的基于SpringBoot搭建的开源项目,帮你快速进行项目搭建!

△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 287 篇原创分享 作者 l Hollis 来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09; SpringBoot一直是开发者比较青睐的一款轻量级框架&#xff0c;他不仅继承了Spring框架原有的优秀特性&#xff0c;而…

C# 搭建一个基于.NET5的WPF入门项目

概述.NET5 发布已经有一阵子了&#xff0c;今天抽空体验一哈&#xff0c;搭建一个WPF项目实例&#xff0c;看看和传统的.NET Framework有什么区别&#xff01;开发环境&#xff1a;VS2019 WPF框架&#xff1a;Caliburn.Micro 版本4.0.173.NET版本&#xff1a;.NET5.0项目创建步…

五个最佳案例带你解读 Node.js 的前后之道

Node.js 是什么&#xff1f; Node.js 采用 C语言编写而成&#xff0c;浏览器内核 V8 做为执行引擎&#xff1b; Node 不是 JS 应用、而是一个 Javascript 的运行环境。 Node 保留了前端浏览器 js 的接口&#xff0c;没有改写语言本身的任何特性&#xff0c;依旧基于作用域和原型…

【ArcGIS风暴】根据海拔范围分级统计GIMMS 3g NDVI平均值案例教程——以甘肃省为例

在论文写作时,通常要根据区域进行统计栅格数据。本文以甘肃省dem、NDVI数据为例,讲解根据海拔范围分级统计NDVI平均值、最大值、最小值和面积等。 1. 海拔分类 dem是本案例的最基本数据,打开ArcMap,加载dem数据,如下图所示: 首先要对dem进行分级,所使用的到的工具是重分…

【转】知道这20个正则表达式,能让你少写1,000行代码

正则表达式&#xff0c;一个十分古老而又强大的文本处理工具&#xff0c;仅仅用一段非常简短的表达式语句&#xff0c;便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话&#xff0c;能够使你的开发效率得到极大的提升。下面是技匠整理的&#xff0c;在前端开发…

Dapr中国社区网站(预览版)发布!

点击蓝字关注我们社区介绍Dapr 是一个可移植的、事件驱动的运行时&#xff0c;它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序&#xff0c;并可运行在云平台或边缘计算中。Dapr 中国社区是一个以 Dapr 为中心的中立而开放的技术社区&#xff0c;为 Dapr 用户…

【ArcGIS风暴】ArcGIS自动生成标识码(BSM)的两种方法案例教程

1. 标识码编制规则 按照每个图层要素的标识码应具有唯一代码的基本要求,根据《GB/T 7027-2002 信息分类和编码的基本原则与方法》规定的信息分类原则和方法,要素标识码采用二层 20 位层次码结构,由村级行政区划代码、要素标识码顺序号构成。具体如下: (1)第一层为村级行…

数据分析入门_char01

数据分析入门_char01 转载于:https://www.cnblogs.com/zsr0401/p/6370697.html

【BIM入门实战】Revit2018项目模板、族库图文安装教程

【扩展阅读】:【MIB】Win11平台上Revit 2018_x64简体中文版图文安装与卸载完整教程 一、Revit 族库、项目样板缺失的产生原因 1、断网或者网络不稳定环境下安装Revit。 2、Revit配置安装界面中取消勾选“Autodesk Revit Content Librabries”。 3、下载了没有自带族库的软件…

一台服务部署多个tomcat注意事项

第一步 添加tomcat环境变量 # vim /etc/profile加入下代码 # TOMCAT ATALINA_BASE/usr/local/tomcat8CATALINA_HOME/usr/local/tomcat8TOMCAT_HOME/usr/local/tomcat8export ATALINA_BASE CATALINA_HOME TOMCAT_HOME 修改应用环境变量&#xff0c;是配置生效# source /etc/pro…