版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SZU_Crayon/article/details/82086389
-
Codeforces 1029B-Creating the Contest
-
题目链接:
B. Creating the Contest
-
思路:
题目大意:
给一个长度为n的严格递增序列,求长度p,使得满足在该范围内的子数组 S,有 2*Si >= Si+1
题解:
定义个计数器Cnt,如果满足条件就+1,否则置1(因为最短长度k为1),顺便记录最大的Cnt
Max_num必须初始为1,一组样例:2 10 50 110 250,Cnt在该样例下没有改变,所以没记录最值维持初态
-
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n;
int Difficulties;
int Max_num=1;
int Pre;
int Cnt=1;
cin>>n;
cin>>Pre;
for(int i=0;i<n-1;i++)
{
scanf("%d",&Difficulties);
if(Difficulties<=2*Pre)
{
Cnt++;
Max_num=max(Cnt,Max_num);
}
else
Cnt=1;
Pre=Difficulties;
}
if(Max_num==-1)
cout<<"1"<<endl;
else
cout<<Max_num<<endl;
return 0;
}