Codeforces Round #476 (Div. 2) [Thanks, Telegram!] D – Single-use Stones(思维)

题意:青蛙过河,有点暴力啊,苟.
解:其实很简单,我们这样想,青蛙的移动距离是[0,l]
,那么每次青蛙移动我们都可以看作是l
这么一段在移动(跳出l
外面的我们已经不用管他了),真正影响是否能到河对面的是这l
里是否有足够的落脚点,我们找到ll里最少的落脚点即是ans
.
#include<cstdio> #include<iomanip> #include<cstring> #include<algorithm> #include<iostream> #include<cmath> #include<vector> #include<set> #include<queue> #include<limits.h> #include<string.h> #include<map> #include<list> #include<bits/stdc++.h> using namespace std; typedef long long ll; #define inf int(0x3f3f3f3f) #define mod int(1e9+9) #define eps double(1e-6) #define pi acos(-1.0) #define lson root << 1 #define rson root << 1 | 1 ll n,l; ll a[100005]; ll sum[100005]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); memset(sum,0,sizeof(sum)); ll ans=LONG_MAX; cin>>n>>l; for(int i=1;i<n;i++) { cin>>a[i]; sum[i]=sum[i-1]+a[i]; } for(int i=l;i<n;i++) ans=min(ans,sum[i]-sum[i-l]); cout<<ans<<endl; }
发表评论