青蛙过河

往返2x次可以看成到对岸2x次,也可以理解为2x只青蛙同时过河,所以每一个y区间石头高度和要>=2x,想到这一步后就解决了,只需要用双指针找出满足条件的最小的y区间了
`#include<stdio.h>

include<stdlib.h>

include<string.h>

include<bits/stdc++.h>

using namespace std;

int main(){
int n,x,y;
int lst[100007];
scanf("%d %d",&n,&x);
for(int i=1;i<=n-1;i++){
scanf("%d",&lst[i]);
}
int sum=0,j=0;
for(int i=1;i<n;i++){
while(j<n&&sum<2*x){
sum+=lst[++j];
}
y=max(y,j-i+1);
sum-=lst[i];
}
printf("%d",y);
return 0;
} `

学习总结:当没思路的时候可以换一个角度看问题,多思考思考。

posted @ 2025-01-26 15:22  十柒*  阅读(3)  评论(0编辑  收藏  举报