zoukankan      html  css  js  c++  java
  • poj2352树状数组解决偏序问题

    树状数组解决这种偏序问题是很厉害的!

    /*
    输入按照y递增,对于第i颗星星,它的level就是之前出现过的星星中,横坐标小于i的总数
    */
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define maxn 32200
    int bit[maxn],n;
    void add(int i){
        while(i<=maxn){
            bit[i]+=1;
            i+=i&-i;
        }
    }
    int sum(int i){
        int s=0;
        while(i>0){
            s+=bit[i];
            i-=i&-i;
        }
        return s;
    }
    int main(){
        int x,y;
        int ans[maxn];
        while(scanf("%d",&n)==1){
            memset(ans,0,sizeof ans);
            memset(bit,0,sizeof bit);
            for(int i=1;i<=n;i++){
                scanf("%d%d",&x,&y);
                ++x;//x不可为0 
                ans[sum(x)]++;
                add(x); 
            }
            for(int i=0;i<n;i++) 
                printf("%d
    ",ans[i]);
        }
    }
  • 相关阅读:
    Java 多态
    HDFS读写原理
    HDFS详解
    Servlet基础
    Tomcat
    HTTP简介
    JDBC技术
    final、finally和finalize
    java 中的权限修饰符
    进程、线程、线程状态、多线程实现方法
  • 原文地址:https://www.cnblogs.com/zsben991126/p/10074234.html
Copyright © 2011-2022 走看看