#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

样例解释

img

完成程序

#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) }}