zoukankan      html  css  js  c++  java
  • “玲珑杯”线上赛 Round #15 河南专场 C 咸鱼魔法记

    C – 咸鱼魔法记
    Time Limit:1s Memory Limit:128MByte

    Submissions:394Solved:137

    DESCRIPTION
    给你一个01串,我们定义这个串的咸鱼值,是最长的全1串。现在你最多可以使用K次咸鱼魔法,每次魔法,你可以使得一个位置翻转(0变成1,1变成0)。问你这个串的咸鱼值最多是多少。

    INPUT
    第一行两个整数N,K。表示串的长度和可以施展咸鱼魔法的次数。(N,K<=300000)
    第二行N个01整数。
    OUTPUT
    输出答案。
    SAMPLE INPUT
    10 2
    1 0 0 1 0 1 0 1 0 1
    SAMPLE OUTPUT
    5
    瞎想的方法,就对了,但是re了两法,以为是数组开小了。
    但是忘了还可能数组越界
    把0的位置全都找出来,然后k范围内的0聚集到一起,最终1的数量越多,那么最终就是答案

    #include<cstdio>
    #include<queue>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<vector>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define LL long long int
    const int inf=0x3f3f3f3f;
    int a[400000];
    int b[400000];
    int main()
    {
        int n,k;
        while(~scanf("%d%d",&n,&k))
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            int ans=-1;
            int len=0;
            for(int i=1; i<=n; i++)
            {
                //printf("%d
    ",a[i]);
                scanf("%d",&a[i]);
                if(a[i]==0)
                    b[len++]=i;
            }
            //printf("%d
    ",len);
            if(len<=k&&k%2==1)
            {
                printf("%d
    ",n-1);
            }
            else if(len<=k&&k%2==0)
            {
                printf("%d
    ",n);
            }
            else
            {
    
                ans=b[k]-1;
                //printf("%d
    ",ans);
                for(int i=1; i+k<=len-1; i++)
                {
                    ans=max(ans,(((b[i+k]-1)-(b[i-1]+1))+1));
                    //printf("%d
    ",ans);
                }
                //printf("zxy %d
    ",b[len-k-1]+1);
                ans=max(ans,(n-(b[len-k-1]+1)+1));
                printf("%d
    ",ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    关于MFC消息的总结
    关于VS中包含库、附加包含库、
    关于MFC中重载函数是否调用基类相对应函数的问题
    关于子窗口处理自身消息而不扩散给父窗口的问题
    进程与线程理解-1
    程序设计思想-2
    线程与进程
    网路编程之socket与 socketserver、黏包
    网络编程之TCP协议与UDP协议
    网络编程基础
  • 原文地址:https://www.cnblogs.com/zxy160/p/7215098.html
Copyright © 2011-2022 走看看