#C06L05P02. C06.L05.尺取法.填空题1.队伍(NHOI2016xy6)
C06.L05.尺取法.填空题1.队伍(NHOI2016xy6)
题目描述
蛋糕分好了,小朋友排着队去领蛋糕。铭铭想从 N 人的队伍中选出 K 位小朋友帮忙分发蛋糕。但铭铭选人的方法有点特别,他想从队伍中选连续的 K 个小朋友,而且必须是男比女多,你知道铭铭有多少种选择吗?
输入格式
第一行,两个整数 N,代表队伍中有 N ( 0 < N <= 1000000 )个小朋友,铭铭想选 K ( K < N )个人。
第二行:有 N 个 0 或 1(0 代表男,1 代表女),每个数用空格隔开。
数据范围
50% 的数据 0 < N < 1000 , k < N ;
80% 的数据 0 < N < 1000000 , k <= 100 ;
100% 的数据 0 < N < 1000000 , k < N ;
输出格式
一个整数。代表铭铭可以有多少种选择方案。
样例
10 3
0 1 1 0 1 0 0 1 0 1
4
样例解释
完成程序
#include<bits/stdc++.h>
using namespace std;
int n,k,a[1000002],c=0;
long long ans;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i]+=a[i-1]; //求女孩子数的前缀和
}
for(int x=1,y=填空(1);y<=填空(2);x++,填空(3) ) // k个人位置不断往右挪
{
int s=a[y]-a[x-1]; //s表示从 x 到 y 的女孩子个数
if(填空(4)>s) c++; //总人数减女孩,就是男孩。如果男生数量大于女生,合条件。
}
cout<<c;
return 0;
}
填空(1):{{ input(1) }}
填空(2):{{ input(2) }}
填空(3):{{ input(3) }}
填空(4):{{ input(4) }}
相关
在以下作业中: