题意:有n分钟,和能保持注意力的k分钟。选定1到n-k+1钟的任意一个位置可连续保持注意力k分钟记录数组a[i]的值。 t=0睡着,t=1清醒。求最大保持记录的a[i]值的和
思路:找到t=0时的保持k分钟的最大和
#include<bits/stdc++.h>
using namespace std;
int a[100005],t[100005];
long long pre[100005];
int main()
{
int n,k,r;
long long ans=0,maxx=-1;
cin>>n>>k;
r=n-k+1;
memset(pre,0,sizeof(pre));
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
cin>>t[i];
if(t[i])
{
ans+=a[i];
pre[i]=pre[i-1]+0;
}
else pre[i]=pre[i-1]+a[i];
}
for(int i=1;i<=r;i++)
{
maxx=max(maxx,pre[i+k-1]-pre[i-1]);
}
cout<<maxx+ans<<endl;
}