zoukankan      html  css  js  c++  java
  • hdu 1166 敌兵布阵 树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166

    裸的树状数组

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #include <vector>
    #include <stack>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <sstream>
    
    using namespace std;
    
    typedef long long ll;
    
    const int maxn = 500010;
    
    struct pre
    {
        int num, id;
        bool operator < (const pre &b) const
        {
            return num < b.num;
        }
    }p[maxn];
    
    int a[maxn], bit[maxn], n;
    
    int sum(int i)
    {
        int s = 0;
        while(i > 0)
        {
            s += bit[i];
            i -= i & -i;
        }
        return s;
    }
    
    void add(int i, int x)
    {
        while(i <= n)
        {
            bit[i] += x;
            i += i & -i;
        }
    }
    
    int main()
    {
    #ifdef LOCAL
        freopen("input.txt", "r", stdin);
        //freopen("output.txt", "w", stdout);
    #endif
    
        while(scanf("%d", &n) == 1 && n)
        {
            for(int i = 0; i < n; i++)
            {
                scanf("%d", &p[i].num);
                p[i].id = i;
            }
    
            sort(p, p + n);
    
            for(int i = 1; i <= n; i++)
            {
                a[p[i-1].id] = i;
            }
    
            ll ans = 0;
    
            for(int j = 0; j < n; j++)
            {
                ans += j - sum(a[j]);
                add(a[j], 1);
            }
    
            printf("%I64d
    ", ans);
    
            for(int i = 0; i <= n; i++)
            {
                bit[i] = 0;
            }
        }
    
        return 0;
    }
  • 相关阅读:
    日报8.18
    Java web项目启动Tomcat报错
    eclipse导入项目报错问题解决方法
    软件架构实践阅读笔记3
    软件架构实践阅读笔记 2
    软件架构实践阅读笔记1
    架构漫谈阅读笔记3
    架构漫谈阅读笔记2
    架构漫谈阅读笔记1
    面向服务的架构SOA
  • 原文地址:https://www.cnblogs.com/dishu/p/4302245.html
Copyright © 2011-2022 走看看