zoukankan      html  css  js  c++  java
  • 翻咸鱼(???)

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


  • 相关阅读:
    计算机故障
    线程池&进程池
    机箱-网卡-声卡-显卡-显示器
    scrapy请求传参-BOSS反爬
    计算机硬件-主板
    计算机硬件-内存
    计算机硬件-硬盘
    计算机硬件-CPU
    ZJNU 1223
    ZJNU 1217
  • 原文地址:https://www.cnblogs.com/da-mei/p/9053370.html
Copyright © 2011-2022 走看看