zoukankan      html  css  js  c++  java
  • 【POJ 2481】 Cows

    【题目链接】

                 http://poj.org/problem?id=2481

    【算法】

                树状数组

                注意特判两头牛的s,e值相同

    【代码】

               

    #include <algorithm>
    #include <bitset>
    #include <cctype>
    #include <cerrno>
    #include <clocale>
    #include <cmath>
    #include <complex>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <ctime>
    #include <deque>
    #include <exception>
    #include <fstream>
    #include <functional>
    #include <limits>
    #include <list>
    #include <map>
    #include <iomanip>
    #include <ios>
    #include <iosfwd>
    #include <iostream>
    #include <istream>
    #include <ostream>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <stdexcept>
    #include <streambuf>
    #include <string>
    #include <utility>
    #include <vector>
    #include <cwchar>
    #include <cwctype>
    #include <stack>
    #include <limits.h>
    using namespace std;
    const int MAXN = 1e5 + 10;
    
    struct info
    {
            int id,s,e;
    } a[MAXN];
    
    int i,n;
    int ans[MAXN];
     
    class BinaryIndexedTree
    {
            private :
                    int c[MAXN];
            public :
                    inline void clear()
                    {
                            memset(c,0,sizeof(c));
                    }
                    inline int lowbit(int x)
                    {
                            return x & (-x);
                    }
                    inline void modify(int pos,int val)
                    {
                            int i;
                            for (i = pos; i < MAXN; i += lowbit(i)) c[i] += val;
                    }
                    inline int query(int pos)
                    {
                            int i;
                            int ret = 0;
                            for (i = pos; i; i -= lowbit(i)) ret += c[i];
                            return ret;
                    }
                    inline int query(int l,int r)
                    {
                            return query(r) - query(l-1);
                    }
    } BIT;
    
    inline bool cmp(info a,info b)
    {
            return a.s != b.s ? a.s < b.s : a.e > b.e;
    }
    
    int main() 
    {
            
            while (scanf("%d",&n) && n)
            {
                    BIT.clear();
                    for (i = 1; i <= n; i++) 
                    {
                            a[i].id = i;
                            scanf("%d%d",&a[i].s,&a[i].e);    
                            a[i].s++;
                            a[i].e++;
                    }        
                    sort(a+1,a+n+1,cmp);
                    memset(ans,0,sizeof(ans));
                    for (i = 1; i <= n; i++)
                    {
                            if (i == 1) 
                            {
                                    ans[a[i].id] = 0;
                                    BIT.modify(a[i].e,1);
                            } else
                            {
                                    if (a[i].s == a[i-1].s && a[i].e == a[i-1].e)
                                            ans[a[i].id] = ans[a[i-1].id];
                                    else ans[a[i].id] = BIT.query(a[i].e,MAXN-1);
                                    BIT.modify(a[i].e,1); 
                            }
                    }
                    for (i = 1; i < n; i++) printf("%d ",ans[i]);
                    printf("%d
    ",ans[n]);
            }
            
            return 0;
        
    }
  • 相关阅读:
    jQuery加载
    2.第一个flask web程序
    [转]前端懒加载以及预加载
    [转]当你在浏览器中输入 google.com 并且按下回车之后发生了什么?
    [转]如何让在FLASH不浮动在层之上
    逻辑回归基础梳理
    线性回归基础梳理
    [傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目
    Java学习之"Hello World"
    JDK安装及Java环境变量配置
  • 原文地址:https://www.cnblogs.com/evenbao/p/9305513.html
Copyright © 2011-2022 走看看