原题目:https://wzoi.cc/s/1/377
思路:
原来是想先把所有数据输入,再从数组[0]开始一直向后查找,发现... ...25分!满屏的TLE!还有WA!!
后来,想到边输入边检查,这样也许会快一点。大概是这样:
通过计算,如果连续合格的计数为n,需要的连续同学数量为m,那么一共有n-m+1种选择方案。
代码:
于是,第一代代码就诞生了:
#include <iostream>
using namespace std;
int main()
{
long long n,m,p,sum=0,taller=0;//taller是计数的变量
cin>>n>>m>>p;
long long num;
for(long long i=0;i<n;i++)
{
cin>>num;
if(num>=p)
{
taller++;
}
if(num<p)
{
if(taller>=m)sum+=taller-m+1;
taller=0;
}
}
cout<<sum;
return 0;
}
结果... ...TLE是没有了,先前的TLE全部变成了WA... ...还是25分... ...
最后发现,输入循环结束后,还会存在剩余的taller变量没有“结算