【CSP-J/S】复赛注意事项

       CSP-J/S复赛马上就要开始啦,但是每年复赛都有很多同学因为一些小失误导致一年的努力付之东流。以下为同学们准备了一些复赛容易踩坑的点,大家一定要多多关注哦!

一、文件的输入输出

       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。

十二、注意图的建立

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

复赛需要注意的点很多,希望同学们一定要仔细仔细再仔细,加油!冲啊!

          

  • 14
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
资源来源于网络,如有侵权,私信立删。 CSP-J/S第一轮时间 CSP-J/S第一轮分为:CSP-J1和CSP-S1。和NOIP第一轮时间一样,CSP-J/S第一轮认证在10月份第三个星期六进行。 CSP-J/S第一轮考察重点 第一轮认证为笔试或机试,主要测试选手有关计算机方面的基本知识,第一轮为资格测试。从2020年开始,全部为机试。 CSP-J/S第一轮报名方式 参加CSP-S/J两组两轮认证均须在网上注册报名,注册网站为http://rg.noi.cn。参加认证者必须如实填写个人信息报名,包括但不限于姓名、身份证号、出生日期、性别、就学(学籍学校)/就职单位等,信息一旦注册,不得修改,如有错误,责任自负。 CSP-J/S第一轮认证考点 省认证点由CCF授权的CSP非专业级别省认证组织单位设置。 1、第一轮认证点:由省认证组织单位总负责人设置,每个认证点人数不应少于20人。 2、未经批准的认证点,其认证成绩不予承认。 认证费用 第一轮CSP-S/J组:50元/人(该费用不包括食宿及交通费)。 CSP-J/S第一轮认证试题组成 CSP-J/S第一轮在10月份第三个星期六进行,其中CSP-J1认证时间为周六9:30-11:30,CSP-S1认证时间为周六14:30-16:30。考试时长为2小时,内容为笔试或机试(从2020年开始全部为机试),满分100分。 试题由三部分组成: ① 选择题(共15题,每题2分,共计30分) CSP-S1的前10道题为单选题,后10道题为不定项选择题(只有全部选对才得分,否则不得分);CSP-J1的前15道题都是单选题。 ② 程序阅读理解题(共3题,共计40分) 题目给出一段程序(不一定有关于程序功能的说明),考生通过阅读理解该段程序进行答题,分为选择题和判断题。 ③ 程序完善题(共3题,共计30分) 题目给出一段关于程序功能的文字说明,然后给出一段程序代码,在代码中略去了若干个语句或语句的一部分并在这些位置给出空格,要求考生根据程序的功能说明和代码的上下文,选择对应答案 。三题皆为选择题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_Khalid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值