zoukankan      html  css  js  c++  java
  • CodeForces-327A-Flipping Game

    题意:

    给出一个01串,要求只能翻转一次区间(在翻转的区间内,0变成1,1变成0),问翻转后1的数量最大是多少。

    思路:

    如果全部都为0肯定全部翻转,如果全部为1肯定只翻转一次,所以默认max应该为-1而不是-inf;

    算出一段区间内0和1的个数差值cnt,与后序数字进行比较,不断更新最大值maxx和cnt。

    AC代码:

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<list>
     7 #include<map>
     8 #include<stack>
     9 #include<stdlib.h>
    10 #include<vector>
    11 #define eps 1e-9
    12 #define read(x) scanf("%d",&x)
    13 #define mem(a,b) memset(a,b,sizeof(a))
    14 #define PI acos(-1)
    15 #define F(a,b,c) for (int a=b;a<=c;a++)
    16 #define RF(a,b,c) for (int a=b;a>=c;a--)
    17 #define sc(a) scanf("%d",&a)
    18 #define SC(n,m) scanf("%d %d",&n,&m)
    19 #define pr(a) printf("%d
    ",a)
    20 using namespace std;
    21 #define inf 0x3f3f3f3f
    22 typedef long long ll;
    23 
    24 int a[110];
    25 
    26 int main()
    27 {
    28     int n;
    29     cin>>n;
    30     int sum=0,cnt=0,maxx=-1;
    31     F(i,1,n)
    32     {
    33         int x;
    34         cin>>x;
    35         if(x==0)
    36         {
    37             cnt++;
    38             maxx=max(maxx,cnt);
    39         }
    40         else
    41         {
    42             cnt--;
    43             if(cnt<0)
    44                 cnt=0;
    45         }
    46         if(cnt<maxx||!cnt)
    47             sum+=x;
    48     }
    49     cout<<sum+maxx<<endl;
    50     return 0;
    51 }
    View Code

    这个博客进行了时间上的优化:

    https://www.cnblogs.com/mqxnongmin/p/10668455.html

  • 相关阅读:
    论文笔记:SRCNN
    4.2 CNN实例探究
    4.1 卷积神经网络
    3 ML策略
    2.3 超参数调试,batch正则化和程序框架
    2.2 优化算法
    2.1 深度学习的实用层面
    Lecture4 反向传播算法
    Lecture3 神经网络学习
    java基础部分
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13023319.html
Copyright © 2011-2022 走看看