【CSP-J/S】复赛注意事项 上机文件组织形式

每年  CSP-J/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助!

一、文件的输入输出

       CSP、NOIP复赛与我们平时在Online Judge做题形式会有一些区别,需要我们将文件放入规定的地点,然后提交汇总,系统判题以后才能得到分数。

其中,每道题都有一个自己的源文件名,比如:aiport.cpp , bracket.cpp , palin.cpp , traffic.cpp,我们同学需要进行如下操作:

1. 打开文件

2. 对文件进行读写操作

3. 关闭文件(可省略不写)

这边帮助大家总结了简单步骤,大家只需要跟着操作就ok啦!

1. 头文件必须包含:#include<cstdio>

2. 在主函数的开头写两句话:

(1) freopen("XXXX.in", "r", stdin) ;

(2) freopen("XXXX.out", "w", stdout) ;

上面的XXXX.in和XXXX.out就是对应着题目的输入文件名和输出文件名,例如freopen("airport.in", "r", stdin) ;

3. 在主函数末尾写两句话:

(1) fclose(stdin);

(2) fclose(stdout);

其中第三步是关闭文件,可以省略不写。

完整的代码模板如下

#include <cstdio>
#include <iostream> 
using namespace std;
 
int main(){
    //打开对应的输入数据文件和输出数据文件
    freopen("XXXX.in", "r", stdin);
    freopen("XXXX.out", "w", stdout);
 
    //原来代码保持不变
    printf("祝大家统统满分!");
 
    //关闭文件,可省略
    fclose(stdin);
    fclose(stdout);
 
    return 0;
}
但是要注意,当加了freopen两句话以后,就没有办法像之前那样测试数据了,所以建议大家在写完这两句话以后先注释掉,等程序测试无误以后再去掉注释。一定要记得去掉注释!!!

最后再提醒一下!

一定要进行文件操作!不然就是零分!

二、注意文件名字

文件夹名、程序文件名、输入文件名、输出文件名

每道题这部分的英文名称都是一样的,都是小写,一定要多检查几遍!

三、注输出格式和大小写问题

1. 注意题目要求输出的多行数据,是否需要换行、是否需要空格以及对应空格的数量

2. 注意输出yes、no、right、impossible等英文提示时,是否要求首字母大写,大小写在Linux下面是不一样的。

四、注意定时保存文件

为了防止突发事件,至少20分钟存盘一次。千万不要关机,否则程序会丢失。

五、注意头文件及命名空间

头文件太多时,容易忘写using namespace std;

但是用了using namespace std; 之后容易产生的问题是:自己的变量名和std命名空间的变量名冲突,而且在Windows下编译器不报错,在Linux下报错。所以自己的变量名不要使用hash、x0、x1、y0、y1,time、next、pipe等。

如果需要这几个单词,可以用Time、Next等个字母大写或者加上一些字母,如mytime、mynext等,或者定义成局部变量。

六、注意变量初始化

变量、数组在使用之前忘了初始化,里面的值是随机的,结果就会出问题,所以使用的时候不要忘记初始化,可以定义成全局变量,系统会自动初始化。

七、数据类型

注意数据类型,输入输出的时候占位符和数据类型要一致,不一致在有时候可能结果也没有错误,但是评测的时候可能就有问题,比如long long的数据类型不能用“%d”,而应该用“%lld”。

八、注意字符串读入方式

由于gets函数会造成安全隐患,在C++中已经被弃用,所以注意不要使用gets函数。可以使用:fgets\getchar\scanf\std::cin或其他读入方式。

九、数组

C++里数组有时候可能会出现莫名其妙的问题,所以一定要记得把数组开大点,并且赋初值。

最好是开成全局变量,因为在main函数里定义的是局部变量,给你的空间会比较小,二维数组很容易就爆了。

还有要注意千万不要数组越界,以下用代码说明:

//比如题目要求n个数, n的范围为0 <= n <= 10000, 很多同学喜欢用下面的方式
int n;
cin >> n;
int a[n+5];

但这是一个错误的定义方式,直接会导致数组越界。因为在编译阶段就会开辟数组的空间,然而在这个时候n并没有输入值,所以会导致n的值随机,开辟一个随机的大小,很容易导致数组越界。

以下是正确的定义方式:

//0 <= n <= 10000
const int N = 1e4 + 5;
int a[N]
 
//或者
 
int a[10005];

十、时间空间资源和精度

1000毫秒内较大循环次数不要超过10^8(10^8有点悬,10^7不超时)。

空间限制在128MB时,数组元素类型为int时,元素个数较多别(约3*10^7),要定义在到main函数外面的全局变量区(二维数组的两个维度大小要相乘)。

十一、数据范围

有的题目,多个数相加,每个数的较大值就到了1e9,那么存放和的变量就必须是long long。有的题目,边权的较大值都到了1e9,并且更新较短路径时两个边权相加,结果就是2e9。

那么我们在为数组元素赋值为无穷大时,应该设多少呢?

我们的无穷大可以是1e9+1,或者0x3f3f3f3f =十进制1061109567

0x7f7f7f7f = 十进制2139062143

int的范围是 - 2147483648 ~ 2147483647 。

所以程序中的无穷大可以定义为1e9+1或0x3f3f3f3f。

十二、注意图的建立

建立图的邻接矩阵和邻接表时,注意单向边和双向边,重边,自环等情况。

十三、上机操作 文件的建立

首先考试时需要从局域网里下载题目和样例数据(下载之后可能需要解压缩),这是第一个文件夹,这个文件夹可随意命名,比如“题目”或“Problem”,或者按默认的名字。提交题目时需要在桌面建立以准考证号命名的文件夹(比如BJ-001),这是第二个文件夹。另外有些选手不想把自己的cpp程序和in文件、out文件放在第一个或第二个文件夹里,这时可以创建第三个文件夹,这个文件夹可以随意命名,比如MyCode。这三个文件夹如下图所示。
在这里插入图片描述

MyCode文件夹里面可以再为每道题创建一个子文件夹,也可以不建立,这个无所谓,反正这个文件夹不用上交。假如不为每道题创建子文件夹的话,那么以CSP-J2019复赛为例,目录结构如下图所示:
在这里插入图片描述

注意:
(1)上图是假定四题都做的情况。如果有题目不会做,就不需要有相应的cpp文件和in、out文件。
(2)每个程序里要加文件输入输出代码,比如

freopen(“number.in”, “r”, stdin);
freopen(“number.out”, “w”, stout);

注意,noilinux下使用freopen,需要包含头文件stdio.h或cstdio或直接使用万能头文件bits/stdc++.h。
(3)xxx.cpp文件需要手动创建。后缀名.cpp在noilinux下需要自己手动填写,无论用gedit还是用emacs还是用guide软件都不会自动生成后缀名,网络上有文章说后缀名会自动生成,这是个误导。
(4)xxx.in文件可以手动文件,也可以把Problem文件夹下面的测试数据比如number1.in或number2.in拷贝到MyCode下,然后重命名把数字编号去掉,即把number1.in或number2.in改成number.in。
(5)xxx.out文件一定不要手动创建,成功运行程序后会自动生成.out文件。如果没生成.out文件即表示程序有误,应检查两行freopen代码尤其是第二行。
(6)题目里会有number1.out或number1.ans或number2.out或number2.ans之类的文件,这个是用来与你的程序生成的number.out中的答案相对照从而判断你的运行结果是否正确。number.out中的运行结果也可以与卷子里的样例结果相对照。
(7)xxx.cpp这里的文件名和freopen中的第一个参数的文件名、xxx.in、xxx.out文件的名称都是一样的,若不一样,肯定有错。比如程序名是number.cpp,那么两行freopen代码的第一个参数如第(2)条所示,所创建的输入文件名为number.in,程序生成的输出文件名为number.out。
(8)最后提交程序时,只需要提交.cpp文件,不需要提交.in和.out文件。

提交的文件夹目录结构如下图所示:
在这里插入图片描述

注意:
(1)上图假定四题都会做。如果只会做三题,那么另一题可以不建立题目文件夹和.cpp文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于模糊PID控制器的风力温度控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 模糊逻辑控制原理 4.2 PID控制原理 4.3 模糊PID控制器原理 4.4 整体系统概述 5.完整工程文件 1.课题概述 当房间的温度不能保持目标温度时&#xff0c;这个系统中的某个部件肯定出现问题了&#x…

flink学习之窗口处理函数

窗口处理函数 什么是窗口处理函数 Flink 本身提供了多层 API&#xff0c;DataStream API 只是中间的一环&#xff0c;在更底层&#xff0c;我们可以不定义任何具体的算子&#xff08;比如 map()&#xff0c;filter()&#xff0c;或者 window()&#xff09;&#xff0c;而只是…

怎么缩小动图的大小?一分钟快速压缩gif体积

GIF动图是一种使用GIF文件格式创建的动画图像。GIF是一种常见的图像文件格式&#xff0c;它支持多帧图像以形成连续播放的动画效果。与其他图像格式只能表示静态图像不同&#xff0c;GIF格式可以存储多个图像帧&#xff0c;并通过在特定时间间隔内循环播放这些帧来创建动画效果…

Instagram被停用怎么办?2024年ins停权最新解决方法

大家有没有遇到过 Instagram 账号突然无缘无故消失的情况&#xff1f;这很有可能是 Instagram 无故禁用了你的账号&#xff0c;面对 Instagram 账号突然被停用的情况&#xff0c;许多用户都感到困惑和无助。这个问题可能影响到你的社交生活&#xff0c;甚至是商业活动。但别担心…

写给不耐烦程序员的 JavaScript 指南(五)

第七部分&#xff1a;集合 原文&#xff1a;exploringjs.com/impatient-js/pt_collections.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 下一步&#xff1a;30 同步迭代 三十、同步迭代 原文&#xff1a;exploringjs.com/impatient-js/ch_sync-iteration.htm…

【开源】基于JAVA的人事管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员功能模块2.2 普通员工功能模块2.3 答辩文案 三、系统展示四、核心代码4.1 查询职称4.2 新增留言回复4.3 工资申请4.4 工资审核4.5 员工请假 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的人…

制造领域 物料清单(BOM)与零件明细表的区别

有许多人分不清物料清单(BOM)与零件明细表的区别,其实它们在企业的生产管理软件中起着不同的作用,各有各的特色,但是却有不尽相同。接下来我们就来区分一下吧 物料清单(BOM)&#xff0c;是详细记录一个项目所用到的所有下阶材料及相关属性&#xff0c;亦即母件与所有子件的从属…

【2024-01-22】某极验3流程分析-滑块验证码

声明&#xff1a;该专栏涉及的所有案例均为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请私信联系本人删帖&#xff01; 文章目录 一、前言二、抓包流程分析1.刷新页面2.点击按钮进行验证…

第二证券:暴跌超24%!美农产品贸易巨头一夜蒸发超600亿

当地时刻1月22日&#xff0c;美股三大股指集体收涨&#xff0c;道指与标普500指数再创前史新高&#xff0c;道指初次收在38000点上方。到收盘&#xff0c;道指涨0.36%&#xff0c;标普500指数涨0.22%&#xff0c;纳指涨0.32%。 大型科技股涨跌不一&#xff0c;其中&#xff0c…

Netty篇章(1)—— 核心原理介绍

终于进入到Netty框架的环节了&#xff0c;前面介绍了大量的Java-NIO的内容&#xff0c;核心的内容Selector、Channel、Buffer、Reactor掌握了&#xff0c;那么学起来Netty也是水到渠成的事情。如果没有掌握前面的内容那么学Netty会非常吃力&#xff0c;下面讲解Netty核心原理与…

Python - argparse模块

python中的argparse模块&#xff0c;用于命令后参数解析&#xff0c;方便测试&#xff0c;是python中自带的模块。 可以自动生成帮助文档&#xff0c;和使用手册。而且当用户在执行程序的时候&#xff0c;输入无效的参数时&#xff0c;会给出对应的错误信息。 使用方法&#…

C++学习笔记——指针

1&#xff0c;指针的基本概念 指针的作用&#xff1a;可以通过指针间接访问内存 内存的编号是从0开始记录的&#xff0c;一般用十六进制数字表示可以利用指针变量保存地址 上图中的p就是a变量的指针&#xff0c;也可以记作*a 2&#xff0c;指针变量的定义和使用 指针变量定…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx&#xff0c;来测试灰度发布实现过程 一、方案&#xff1a;使用ingress实现应用的灰度发布 1、服务端&#xff1a;正常版本v1&#xff0c;灰度升级版本v2 2、客户端&#xff1a;带有请求头versionv2标识的请求访问版…

头条文章采集ChatGPT4.0改写软件环境配置教程步骤

大家好&#xff0c;我是淘小白~ 下面给大家整理一下&#xff0c;ChatGPT4.0改写软件环境配置教程 下面是我们拿到的环境配置软件&#xff0c;分别是&#xff1a;117版本的谷歌浏览器&#xff0c;谷歌浏览器驱动&#xff0c;notepad&#xff08;用于打开config.ini&#xff0c…

由于找不到msvcp140.dll无法继续执行的5种解决方法

在计算机系统中&#xff0c;如果未能成功找到或加载msvcp140.dll这个动态链接库文件&#xff0c;可能会引发一系列运行问题和功能障碍。msvcp140.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows的应用程序来说&#xff0c;它是至关重…

ASP.NET Core 高级之使用Redis缓存

阅读本文你的收获 了解Redis基本作用及其使用场景学会安装Redis服务端和客户端及简单的命令行操作学习在ASP.NET Core WebAPI项目中如何操作Redis缓存 一、Redis介绍 Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键…

全国各城市绿地及绿化面积数据,shp/excel格式,2020-2022年

基本信息. 数据名称: 全国各城市绿地及绿化面积数据 数据格式: Shp、excel 数据时间: 2020-2022年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1province省份名称2city城市名称4city_dm城市…

通过浏览器URL地址,5分钟内渗透你的网站!很刑很可拷!

今天我来带大家简单渗透一个小破站&#xff0c;通过这个案例&#xff0c;让你深入了解为什么很多公司都需要紧急修复各个中间件的漏洞以及进行URL解析拦截等重要操作。这些措施的目的是为了保护网站和系统的安全性。如果不及时升级和修复漏洞&#xff0c;你就等着被黑客攻击吧&…

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等

使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 此自动化脚本将帮助你使用 Python 中的 Android 调试桥 (ADB) 自动化你的智能手机。下面我将展示如何自动执行常见任务,例如滑动手势、呼叫、发送短信等等。 您可以了解有关 ADB 的更多信息,…

测量USB接口信号眼图质量

此处只描述High&#xff0d;Speed模式信号质量的测试方法&#xff0c;Full&#xff0d;Speed测试方法可参考High&#xff0d;Speed测试方法。测试前连接好电路&#xff0c;对于USB 2.0 Host设备&#xff0c;差分探头TDP3500尽量靠近芯片信号输出地方&#xff0c;并注意极性不要…