近期刷题坑点总结
初来乍到博客园,随便写一篇刷题总结。
最近在洛谷的训练场刷了一些基础模拟题,题目的难度并不大,也就是普及组的真题难度,但是里面的很多坑点是自己之前刷题并没有注意到的。
坑点:
- 小心边界判断,对于求最大/最小问题,或者很多求极值问题,在程序编写>、<的过程中要判断是否允许出现=的情况,避免因为边界问题而产生的部分WA。
- 仔细对题,对于题目中出现的输出要求:K个整数a1,a2,…,aKa_1,a_2,…,a_Ka1,a2,…,aK,表示第a1a_1a1行和a1+1a_1+1a1+1行之间、第a2a_2a2行和a2+1a_2+1a2+1行之间、…、第aKa_KaK行和第aK+1a_K+1aK+1行之间要。。。,其中ai<ai+1a_i< a_i+1ai<ai+1,每两个整数之间用空格隔开,应注意其中包含了按字典序(从大到小)输出结果的要求,避免输出格式错误。
- 在输入字符的时候,应尽量避免使用getchar(),使用cin替换getchar()输入字符,避免getchar()读取缓冲区时出现的各种错误。
以下是使用markdown的,代码粘贴练习,请自动忽略
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define WIN1 11
#define WIN2 21
using namespace std;
char str[65005];
char c = 0;
int n = 0;
int nNum1 = 0;
int nNum2 = 0;
int main()
{
while(1)
{
cin>>c;
if(c == 'E')
{
str[n++] = (char)c;
break;
}
str[n++] = (char)c;
}
for(int i = 0;i < n;i++)
{
if(str[i] == 'W')
{
nNum1++;
}
else if(str[i] == 'L')
{
nNum2++;
}
else
{
cout<<nNum1<<":"<<nNum2<<endl;
}
if((nNum1 >= WIN1 || nNum2 >= WIN1) && abs(nNum1 - nNum2) >= 2)
{
cout<<nNum1<<":"<<nNum2<<endl;
nNum1 = 0;
nNum2 = 0;
}
}
cout<<endl;
nNum1 = 0;
nNum2 = 0;
for(int i = 0;i < n;i++)
{
if(str[i] == 'W')
{
nNum1++;
}
else if(str[i] == 'L')
{
nNum2++;
}
else
{
cout<<nNum1<<":"<<nNum2<<endl;
}
if((nNum1 >= WIN2 || nNum2 >= WIN2) && abs(nNum1 - nNum2) >= 2)
{
cout<<nNum1<<":"<<nNum2<<endl;
nNum1 = 0;
nNum2 = 0;
}
}
return 0 ;
}

浙公网安备 33010602011771号