zoukankan      html  css  js  c++  java
  • Ural_1090. In the Army Now (数状数组)

      /*开始没看懂题意。悲剧了一晚上。。。题意是N个人编号,1号最高,N号最矮,从后
    往前跳。我看成1号最矮,N号最高了。其实可以把输入的数转化一下,让1号最矮,N号最
    高,这样就好处理了。
    */

    //My Code:

    #include <iostream>
    #include <cstdio>
    #include <cstring>

    using namespace std;

    const int N = 10007;

    int c[N], n;

    int lowbit(int i) {
    return i&(-i);
    }

    void add(int i, int val) {
    while(i <= n) {
    c[i] += val;
    i += lowbit(i);
    }
    }

    int sum(int i) {
    int s = 0;
    while(i > 0) {
    s += c[i];
    i -= lowbit(i);
    }
    return s;
    }

    int main() {
    //freopen("data.in", "r", stdin);

    int k, s, max, i, j, x, max_f;
    while(~scanf("%d%d", &n, &k)) {
    max = 0; max_f = 1;
    for(i = 0; i < k; i++) {
    memset(c, 0, sizeof(c));
    for(s = 0, j = 0; j < n; j++) {
    scanf("%d", &x);
    x = n - x + 1;
    add(x, 1);
    s += sum(x-1);
    }
    if(s > max) {max = s; max_f = i+1;}
    }
    cout << max_f << endl;
    }
    return 0;
    }
  • 相关阅读:
    IE10 下兼容性问题
    前端面试题十九
    前端面试题十八
    前端面试题十七
    前端面试题十六
    前端面试题十五
    前端面试题十四
    前端面试题十三(兼容)
    前端面试题十二
    前端面试题十一
  • 原文地址:https://www.cnblogs.com/vongang/p/2270660.html
Copyright © 2011-2022 走看看