• 翻咸鱼(???)


    Problem A Salty Fish

    Accept: 108    Submit: 400
    Time Limit: 1000 mSec    Memory Limit : 32768 KB

     Problem Description

    海边躺着一排咸鱼,一些有梦想的咸鱼成功翻身(然而没有什么卵用),一些则是继续当咸鱼。一个善良的渔夫想要帮这些咸鱼翻身,但是渔夫比较懒,所以只会从某只咸鱼开始,往一个方向,一只只咸鱼翻过去,翻转若干只后就转身离去,深藏功与名。更准确地说,渔夫会选择一个区间[L,R],改变区间内所有咸鱼的状态,至少翻转一只咸鱼。

    渔夫离开后想知道如果他采取最优策略,最多有多少只咸鱼成功翻身,但是咸鱼大概有十万条,所以这个问题就交给你了!

     Input

    包含多组测试数据。

    每组测试数据的第一行为正整数n,表示咸鱼的数量。

    第二行为长n的01串,0表示没有翻身,1表示成功翻身。

    n≤100000

     Output

    在渔夫的操作后,成功翻身咸鱼(即1)的最大数量。

     Sample Input

    51 0 0 1 030 1 0

     Sample Output

    42

     Hint

    对于第一个样例,翻转区间[2,3],序列变为1 1 1 1 0。

    对于第二个样例,翻转整个区间,序列变为1 0 1。

    #include<stdio.h>
    int a[100005];
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            int sum=0;
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
                if(a[i]==1)
                    sum+=1;
            }
            if(sum==n)
            {
               printf("%d
    ",n-1);
               continue;
            }
            int x=0;
            int ma=0;
            for(int i=1;i<=n;i++)
            {
                if(a[i]==1)
                {
                    x--;
                    if(x<=0)
                        x=0;
                }
                else
                {
                   x++;
                   if(x>=ma)
                       ma=x;
                }
            }
            sum+=ma;
            printf("%d
    ",sum);
        }
    }


  • 相关阅读:
    Leetcode:42. Trapping Rain Water
    Leetcode: 41. First Missing Positive
    Leetcode: 40. Combination Sum II
    多项式全家桶
    BZOJ 3878 [AHOI&JSOI2014]奇怪的计算器 (线段树)
    BZOJ 2959 长跑 (LCT+并查集)
    BZOJ 3028 食物 (生成函数+数学题)
    luogu P5504 [JSOI2011]柠檬
    hdu 6399 City Development
    luogu P3826 [NOI2017]蔬菜
  • 原文地址:https://www.cnblogs.com/da-mei/p/9053370.html
Copyright © 2020-2023  润新知