zoukankan      html  css  js  c++  java
  • poj2481

    给定n个集合 输出每个集合是多少集合的子集

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<stack>
    #define lowbit(x) x&(-x)
    using namespace std;
    struct p
    {
        int x,y,rank;
    }sts[151000];
    int c[151000],MAXN;
    bool cmp(p b,p a)
    {
        if(b.y==a.y)return b.x<a.x;
        return b.y>a.y;
    }
    inline int sum(int x)
    {
        int res=0;
        for(int i=x;i>=1;i-=lowbit(i))res+=c[i];
        return res;
    }
    inline void add(int x)
    {
        for(int i=x;i<=MAXN;i+=lowbit(i))c[i]++;
    }
    int ans[151000];
    int main()
    {
        int n;
        while(~scanf("%d",&n) && n)
        {
            memset(c,0,sizeof(c));
            memset(ans,0,sizeof(ans));
            MAXN=-1;
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&sts[i].x,&sts[i].y);
                sts[i].x++,sts[i].y++;
                MAXN=max(MAXN,max(sts[i].x,sts[i].y));
                sts[i].rank=i;
            }
            sort(sts+1,sts+n+1,cmp);
            int cnt=0;
            for(int i=1;i<=n;i++)
            {
                if(sts[i].x==sts[i-1].x && sts[i].y==sts[i-1].y)cnt++;
                else cnt=0;
                ans[sts[i].rank]=sum(sts[i].x)-cnt;
                add(sts[i].x);
            } 
            for(int i=1;i<=n;i++)printf("%d ",ans[i]);
            printf("
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    css3 画小蜜蜂
    css3 绘制书本
    JavaScript 封装插件学习笔记(一)
    Jquery 多行拖拽图片排序 jq优化
    可输入式下拉框
    竖向展开式菜单
    checkbox 全选或取消
    JQuery.lazyload 图片延迟加载
    轻量级弹出框 lightbox
    onoffswitch-checkbox
  • 原文地址:https://www.cnblogs.com/Kong-Ruo/p/7762269.html
Copyright © 2011-2022 走看看