H
小L的数组
https://ac.nowcoder.com/acm/contest/120566/H
若出现脚后跟位置<缝隙位置<脚尖位置,则输出YES,否则NO,每个缝隙位置可用前缀和存入一个新的数组,通过双指针i,j,i用来遍历脚后跟位置,j用来遍历所有缝隙,对于每个i,找到大于i的j,并且检查i+l是否>j若成立,则直接YES并且return 0,反之找不到便输出NO。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
long long l;
cin>>n>>m>>l;
long long sum=0;
vector<long long> dp;
vector<long long> x(n);
for(int i=0;i<n;i++){
cin>>x[i];
sum+=x[i];
dp.push_back(sum);
}
vector<long long> y(m);
for(int i=0;i<m;i++){
cin>>y[i];
}
long long p=0;
int j=0;
while(j<dp.size() && dp[j]<p){
j++;
}
if(j<dp.size() && dp[j]>p && dp[j]<p+l){
cout<<"YES";
return 0;
}
for(int i=0;i<m;i++){
p+=y[i];
while(j<dp.size() && dp[j]<p){
j++;
}
if(j<dp.size() && dp[j]>p && dp[j]<p+l){
cout<<"YES";
return 0;
}
}
cout<<"NO";
return 0;
}
查看20道真题和解析