青蛙过河
往返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;
} `
学习总结:当没思路的时候可以换一个角度看问题,多思考思考。