【题解】黑白奶牛

题目描述

有N只奶牛从左往右排成一行,编号是1至N。这N只奶牛当中,有一些奶牛是黑色的,其余的是白色的。

color[i]表示第i只奶牛的颜色,如果color[i]=0则表示第i头奶牛是黑色的,如果color[i]=1则表示第i头奶牛是白色的。

六一奶牛儿童节快到了,农场主Farmer John要从这N头奶牛当中,挑选尽可能多的奶牛去参加晚会。

Farmer John挑选奶牛的原则是:挑选编号是连续的一段奶牛,这一段奶牛的颜色必须全部是白色的。

Farmer John有一个魔法棒,每用一次魔法棒就可以把一头黑色的奶牛变成一头白色的奶牛,魔法棒最多只能使用K次。

在上述条件下,最多可以有多少头奶牛去参加晚会呢?

输入输出格式

输入格式

第一行,两个整数,N和K。

第二行,N个整数,第i个整数就是color[i],color[i]要么是0,要么是1。

输出格式

一个整数,表示最多有多少头奶牛可以去参加晚会。

输入输出样例

输入样例一

11 0

1 1 0 0 1 1 1 1 0 1 1

输出样例一

4

输入样例二

11 1

1 1 0 0 1 1 1 1 0 1 1

输出样例二

7

说明

样例说明

样例一说明:由于K=0,所以不能使用魔法棒,所以挑选编号是5至8的奶牛去参加晚会。

样例二说明:由于K=1,所以最多可以使用1次魔法棒,使用魔法棒把第9头奶牛变成白色奶牛,然后挑选编号是5至11的奶牛去参加晚会。

题解

暴力尺取法遍历区间一遍即可,用魔法棒时就--k,恢复时就++k。

#include<iostream>
#include<string>
using namespace std;
int n,k,color[100000000],a[100000000],sum,smax;
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>color[i];
        a[i]=a[i-1];
        if(color[i]==0) a[i]++;
    }
    for(int l=0,r=1;r<=n;r++)
    {
        if(a[r]-a[l]<=k)
        {
            sum++;
            if(r==n&&sum>smax) smax=sum;
        }
        else
        {
            if(sum>smax) smax=sum;
            l++;
        }

    }
    cout<<smax;
    return 0;
}

原文地址:https://www.cnblogs.com/kcn999/p/10352408.html

时间: 2024-10-10 14:11:42

【题解】黑白奶牛的相关文章

【题目荟萃】删数字、约数、黑白牛奶

删数字 时间限制:?1 Sec??内存限制:?128 MB 题目描述 奶牛在数学课上学习了整除的概念.农夫Farmer John为了考验它的数学水平,于是在白纸上写了正整数T.由于农夫不喜欢数字0,所以正整数T是不含数字0的.奶牛可以删除T的若干位数字,剩下来的数字从左到右构成一个正整数P,使得正整数P必须是5的倍数.奶牛有多少种不同的删除方案?具体请看样例解释. ? 输入 第一行,一个正整数T. ? 输出 一个整数,奶牛不同的删除方案数. 1.奶牛可以删除0个数字(即不删除任何数字). 2.奶

USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解

Cows on Parade Farmer John has two types of cows: black Angus and white Jerseys. While marching 19 of their cows to market the other day, John's wife Farmeress Joanne, noticed that all 16 possibilities of four successive black and white cows (e.g., b

[codevs1022]覆盖

试题描述 有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地.如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积. 输入 输入文件的第一行是两个整数N,M  (1<=N,M<=100),第二行为一个整数K( K<=50),接下来的K行,每行两个整数X,Y表示K个水塘的行列位置.(1<=X<=N,1<=Y<=M). 输出 输出所覆盖的最大面积块(1×2面积算一块). 输入示例 4 4 6 1 1 1 4 2 2

矩阵乘法专题2——bzoj 1706 [usaco2007 Nov] relays 奶牛接力跑 题解

转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24960651 [原题] 1706: [usaco2007 Nov]relays 奶牛接力跑 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 340  Solved: 162 [Submit][Status] Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力

【题解】幸运奶牛

题目描述 有N头奶牛从左往右排成一行,编号是1至N.如果某头奶牛的编号是2的倍数或者是3的倍数,那么这头奶牛就是幸运奶牛.这N头奶牛中,总共有多少头奶牛是幸运奶牛? 输入输出格式 输入格式 一行,一个整数N. 输出格式 一行,一个整数,表示幸运奶牛的数量. 输入输出样例 输入样例 10 输出样例 7 说明 数据规模 对于70%的数据,1≤N≤10000. 对于100%的数据,1≤N≤2000000000. 题解 小学奥数,直接上代码. #include <cstdio> int main()

【题解】款待奶牛

题目描述 Farmer John有n(1≤n≤2000)个美味的食物,他想卖掉它们来赚钱给奶牛.这些食物放在一些箱子里,它们有些有趣的特性: (1)这些食物被编号为1-n,每一天Farmer John可以从这排箱子的头部或者尾部取出食物去卖: (2)这些食物放得越久,年龄越大,价值越大,食物i有一个初始的价值v(i): (3)放了a天后,年龄为a,食物最终的价值为v(i)×a. 给定每一个食物的初始价值v(i),请求出FJ卖掉它们后可以获得的最大价值,第一天出售的食物年龄为1,此后每增加一天食物

题解 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

题解 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题目链接 数据规模16-20的都是状压 如果要每一位都压序号的话空间肯定是不够的,所以每一位只能是0或1.1表示有这头牛,0表示没有这头牛.显然每个位置的选择和他两边的牛有关,所以我们就可以定义这样的状态: f[i][j]表示使用集合i的牛,其中最后一头牛的序号为j时的总方案数.答案从f[(1 << n) - 1][n]累加即可. 转移也比较好想,从i中枚举选出倒数第二头牛,作为子状态的最后一头牛,注意边界情况.

题解 P2986 [USACO10MAR]伟大的奶牛聚集

题解 P2986 [USACO10MAR]伟大的奶牛聚集 题目链接 很好的一道树形dp的题目,我们观察每一个点i的答案,发现答案 f[i] 由两部分组成: A1.i所有子树中的犇集中到i点 A2.除了i的子树中的所有犇集中到i的父亲节点,再走到i点 f[i] = A1 + A2 我们发现i的答案和i的孩子有关,也和i的父亲有关.一般这样的问题用两次dfs就可以解决.(由于选谁是根节点都无所谓,以下以1号节点为根) 第一次dfs我们求出每一个点的 f[i], 意思是以i为根节点的子树中的牛集中到i

洛谷 P1824 进击的奶牛 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接 :https://www.luogu.org/problem/show?pid=1824 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000). 他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒.为了防止牛之间的互相打斗,Fa