考试时需要一些技巧,才最有可能拿出最高得分。
现在我总结出来了一下几点:(在上机考试有用)
1.不要用bits/stdc++.h。
2.尽量少用cin和cout,因为他们在输入和输出大量数据后,速度会减慢许多。
一定要多用scanf和printf(不过当你在考试时想不到什么“%d”,“%c”等讨厌的东西,就用cin,cout吧)
通过一下图片可以了解的更好。
这是有一题没有用scanf和printf:
用了之后:
速度快了多少???????
再也不用担心TLE了!
(注:只有在输入输出很多数据时才会有如此大的差距)
3.不要加火车头(尽管会加快速度200-300ms)
4.注意时间复杂度,一秒内可以执行不超过1亿次操作(语句),超过了就很有可能会超时(用2.会帮忙加快速度)
特别要注意循环,尽量不要三重循环,甚至四重循环,否则…………TLE!!
5.注意内存(千万要注意!)
内存一般只有5000*5000,,即为25000000,超过就有可能出现以下情况:
(1)RE!0分!不执行!
千万注意数组不要靠近25000000,因为每个其他变量(不光是数组)也要内存!
long long更多!(注:能用bool就用bool,bool可以有1亿个)
定义数组时一般要多定义1,5,10(10最为保险,考试时建议为10,同样定义少了有可能会错几个)
6.注意数据范围
一定要看一下数据范围,这样你能确定数组的大小。前1-2题可以按照满分的算法去做(如果你认为自己无法拿到满分,就用后面的方法),后几题难到爆炸的题目,一般先满足40%-60%(后几题拿到40-60分已经是特别特别厉害了),如果有余力,可以按照满分做法去做(不推荐,万一错了哪一个步骤,直接爆零!)
7.注意文件操作!
考试时要用到文件操作,记住:文件操作千万不要出错!错了的话所有题目都是0分!太亏了!天下第一亏!
在家时一定要多加练习,平时做考试题目时要多用文件操作!
8.可以使用简单方法定义数组
有一些题目要定义大量数组,而且范围都一样,这个时候就要用到这个方法了:
#define N 100010
const int N=100010;
这样N就是100010,而且N可以用来定义数组:
int a[N]是成立的。
9.可以节省大量时间的方法
当我们遇到很多类似的东西(如long long,for(int i=1;i<=n;i++))等,也是可以像8.一样的!
#define ll long long
#define fo for(int i=1;i<=n;i++)
这样ll就是long long,fo就是for(int i=1;i<=n;i++)了。是不是特别省时省力?
10.定义函数和数组时名称很重要
有时候写代码时会有大量的变量和函数,如果多了,我们就有可能不知道谁对谁了。
那么就需要把函数和数组的名字定义成你自己懂得。
例如排序:cmp
dfs深度优先搜索
maxn 最大值
minn 最小值
还有很多,只要自己知道,什么都是可以的。就好比推箱子游戏中的函数:
JG()为金光工作室的缩写,我一读就知知道是金光工作室的介绍
还有choose(),Description(),Game_Menu()等,都是一看都知道的,否则看到就会一脸懵逼。
10.要写//,/*等批注!
批注是长代码中很重要的一部份,他可以让你快速的直到这一行或者这一段代码是干什么的。
如果没有备注,就会非常麻烦的再次理解一遍,编游戏时也一样。
这就是我总结出来的几点。如果有更多的,请发在下面。
王文博在2021-07-10 16:27:22追加了内容
火车头的威力:
(时间限制为2000ms)
不用火车头:
差了多少???