• CodeChef TechFest 2013 Balancing nature(暴力)


    题目链接:http://www.codechef.com/TCFST13/problems/TCFST06

    我表示只能刷刷水题了~~

    计算一个数组变成前面都负数后面都正数的最小操作个数。

    枚举中间点就ok

    代码如下

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 int n, a[500100], ans, na, pos, lna, lpos, lans;
     7 
     8 int main()
     9 {
    10 //    freopen("in.txt", "r", stdin);
    11 
    12     while(cin >> n)
    13     {
    14         ans = 0;
    15         na = 0, pos = 0;
    16         for(int i=0; i<n; i++){
    17             scanf("%d", &a[i]);
    18 
    19             if(a[i]==0)ans++;
    20             if(a[i]<0)na++;
    21             if(a[i]>0)pos++;
    22         }
    23         lna = 0, lpos = 0, lans = n-pos-ans;
    24         for(int i=0; i<n; i++){
    25             if(a[i]==0)continue;
    26             else if(a[i]<0) lna++;
    27             else lpos++;
    28             if(lpos+(na-lna)<lans)
    29             lans = lpos+(na-lna);
    30         }
    31         ans+=lans;
    32         printf("%d
    ", ans);
    33     }
    34     return 0;
    35 }
    View Code
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    javascript中有关this的解析题
    变量声明
    js事件
    js用法
    dom对象
    数据的三大储存格式
    函数
    全局环境
    循环语句及案例
    条件语句
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3390429.html
Copyright © 2020-2023  润新知