CSP/GESP/NOIP/NOI考试基本代码

目录

# 1 正经的代码

## 1.1 文件输入输出

## 1.2 快读

# 2 不正经的代码

## 2.1 打表

## 2.2 输出-1

## 2.3 加上样例

# 3 结语


upd:4月6日 改正2.3代码中出现的错误

# 1 正经的代码

“正经的代码”指考试时必须需要做的和大多代码都需要做的。

## 1.1 文件输入输出

在NOI赛场上,如果你不会文件输入输出,就会开心地报零。那么,我们就需要背过这一段代码,即使你不知道是什么意思。

如下表格中第一列介绍了stdin,第二列介绍了stdout。

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部分的内容。

如有问题,请在评论区问我哦!记得关注我哦!!

下期再见!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值