F - Nastya and Door
程序员文章站
2022-06-08 15:53:52
...
F - Nastya and Door
题意
n座山当高度大于左右两座称为峰,一个足够长的门倒下被山峰隔断,问k个长度最多隔断几段。
思路
先进行一次遍历,统计峰,两端不能为峰,再次遍历利用数组差得出段数选最大的。
代码
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n,k,i;
cin>>n>>k;
int a[n+1],b[n+1]={0};//放在循环里。
for(i=1;i<=n;i++)cin>>a[i];
for(i=2;i<n;i++){
if(a[i]>a[i-1]&&a[i]>a[i+1])b[i]=1;//统计峰。
b[i]+=b[i-1]; //并且山要累计前面峰的数量做差就可以得到峰的数量。
}
int count,max=0,simi; //每一段i到i+k-之间的峰数。
for(i=1;i+k-1<=n;i++){
count=b[i+k-2]-b[i]+1; //i+k-1到i的有效峰数
if(count>max){
max=count;
simi=i;
}
}
cout<<max<<" "<<simi<<endl;
}
}
上一篇: 洛谷【P1523】旅行商的背包(算法导论 15-1) 题解
下一篇: 监控CPU的小程序
推荐阅读
-
Oracle X$ tables – Part 1 – Where do they get their data f
-
电脑开机要按f1才能继续启动进入系统的解决方法
-
Python格式化字符串f-string概览(小结)
-
python f-string式格式化听语音流程讲解
-
Fn功能和F1-F12对调方法以Yoga笔记本为例
-
联想笔记本按f5键不刷新怎么办? 笔记本f5键不刷新的解决办法
-
开机时需要按F1或F2键后才能继续启动的解决方法汇总
-
Fn+F5不显示无线网卡开关界面的解决方法
-
联想g510笔记本触摸板无法使用快捷键f6关闭?
-
宏碁f5 572g笔记本怎么样? 宏碁 572g笔记本详细测评