复赛注意事项

一, 文件读写

无论是 CSP ,还是 NOIP ,参加复赛的选手都需要使用文件读写,而在复赛中因为文件读写写错或忘写而爆零的示例也并不少见。

文件读写模版:

    freopen("XXX.in","r",stdin);
	freopen("XXX.out","w",stdout);

其中, “XXX” 代表题目中会给定的文件名,直接填写便是。

注意,文件读写必须放在主函数大括号的最顶端,形如:

#include<iostream>
using namespace std;
int main()
{
	freopen("XXX.in","r",stdin);
	freopen("XXX.out","w",stdout);
	return 0;
}

到底一道题要不要使用文件读写,还是要看题目有没有给定文件读写所需要的文件名,当然,有些复赛也不需要文件读写。

如北京今年举办的 BCSP-X 的复赛,在复赛举办的前几天取消了需要 文件读写 的规定,让选手将代码直接提交在网站上。

二,数据范围

1,数据大小

C++ 界,有一句很有名的话:十年OI一场空,不开 long long 见祖宗

有很多题目 ,都会产生数据超过 int 类型极限的情况,那时,如果还使用 int 类型,就会失去分数,乃至爆零。

对于大多数题目, long long 类型已经足够了,但如果数据达到了 2^{70} ,或者 2^{80} 呢? long long 也不行了,这时就需要请出 __int128 类型了。__int128 的极限达到了 2^{127}-1 ,这个大小,对数字来说,已经非常巨大了。

但是, __int128 需要特殊的输入与输出,被称为 快读快写 ,有点麻烦。

所以,对于所有题目,直接开 long long 或者 __int128 就够了吗,不是的,这跟空间大小有关。

2,空间

一般情况下,一道题目的空间限制为 256MB 或 512MB ,超过题目的空间限制会导致 MLE(内存超限)

所以,无脑的使用 long long 也是不正确的。

3,时间

一道题的时间限制和数据范围决定了这道题需要了怎样的算法,如 O(log n) 的二分, O(n) 的前缀和, O(n log n) 的最长上升子序列。

如果使用的算法不够快速,将导致 TLE(时间超限)

三,骗分

在比赛中,骗分是一种技术活,骗的好,能拿到二等或者三等 也说不定(反正我是没见过只靠骗分拿到一等的)。

但到底怎么骗呢,我这个蒟蒻也说不来,还是建议大家去看看别的博客。

最后,祝大家都能 RP++,祝大家都有光明的未来!

2 个赞

包括月赛qwq

哈哈哈,我同学复赛本来能拿300分的,结果没写文件操作0分,笑死我了。

我无脑开完long long后,max中的0没用0ll,爆0CE!!!

这个在本地应该可以测出来吧