目录
upd:4月6日 改正2.3代码中出现的错误
# 1 正经的代码
“正经的代码”指考试时必须需要做的和大多代码都需要做的。
## 1.1 文件输入输出
在NOI赛场上,如果你不会文件输入输出,就会开心地报零。那么,我们就需要背过这一段代码,即使你不知道是什么意思。
如下表格中第一列介绍了stdin,第二列介绍了stdout。
文件对象 | stdin | 标准输入文件,一般指键盘,scanf,getchar等函数默认从std获取输入的数据 |
---|---|---|
功能说明 | stdout | 标准输出文件,一般指printf,putchar等函数默认从std获取输入数据 |
核心代码(以A+B Problem为例):
freopen("1.in","r",stdin);//打开1.in
freopen("1.out","w",stdout);//打开1.out
int a,b;
cin>>a>>b;//正常A+B
cout<<a+b;//正常A+B
fclose(stdin);//关闭1.in
fclose(stdout);//关闭1.out
## 1.2 快读
在程序中,使用cin,scanf耗时较多,有时会TLE。那么,我们就需要使用快读了(快输基本用不上,需要讲解的请在评论区发一下,我后续可能会讲解)。
快读需要使用getchar,但getchar只能读入字符串,那我们怎么做呢?
很简单,做法与高精度加法相似。
int read()//OI界中,大家喜欢将快读写成read
{
int s=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')//特判负数
f=-1;//掌管正负的神
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';//与高精度加法相似
ch=getchar();
}
return s*f;
}
# 2 不正经的代码
## 2.1 打表
打表是广大OIer最喜爱的得分方式。无技术含量,但能得到一些分数。但是,打表仅适于数据范围较小的题目。
模板代码:
int n;
int ans[10]={1,3,6,10,15,21,28,36,45,55};
cin>>n;
cout<<ans[n];
## 2.2 输出-1
在很多题目中,会出现类似“如果无解,输出-1”的题目描述。此时,我们就可以欢喜一场了。直接输出-1就大概能得分了。
模板代码(这就不必抄了吧):
cout<<-1;
## 2.3 加上样例
在非提交答案题中,题目大多会给出输入输出样例。在2.2的基础上,我们特判一次输入样例,有可能多的几分。
模板代码:
int n;
cin>>n;
if(n==输入样例1){
cout<<输出样例1;//将中文换成题目中的输入输出样例即可
}
else{
cout<<-1;
}
# 3 结语
第1部分内容一定要牢记(GESP选手不用管1.2)。
在你会的题目中,请用正规做法做题,当你不会时再用第2部分的内容。
如有问题,请在评论区问我哦!记得关注我哦!!
下期再见!!!