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;
    }
  • 相关阅读:
    计算机网络拓扑结构
    中继器,集线器,网桥,交换机,路由器
    网络层次模型
    广播域和冲突域
    Tomcat
    Log4j
    Eclipse实用快捷键
    WebService是什么?
    定时任务处理-Quartz
    MySQL内存表-临时表
  • 原文地址:https://www.cnblogs.com/vongang/p/2270660.html
Copyright © 2011-2022 走看看