n只羊,每只羊占有一个[S,E]。如果一只羊的区间囊括它,而且长度比它长,就说明这只羊比它大。求每只羊比它本身大的羊的数目

简介: n只羊,每只羊占有一个[S,E]。如果一只羊的区间囊括它,而且长度比它长,就说明这只羊比它大。求每只羊比它本身大的羊的数目
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
struct node
{
    int id,x,y;
}st[maxn];
int num[maxn];
int n;
int c[maxn];
bool cmp(node a,node b)
{
    if(a.y!=b.y)
        return a.y>b.y;
    else
        return a.x<b.x;
}
int lowbit(int x)
{
    return x&(-x);
}
void update(int id)
{
    for(int i=id;i<maxn;i+=lowbit(i))
        c[i]++;
}
int getsum(int id)
{
    int ans=0;
    for(int i=id;i>=1;i-=lowbit(i))
        ans+=c[i];
    return ans;
}
int main()
{
    while(scanf("%d",&n)&&n)
    {
        for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&st[i].x,&st[i].y),st[i].id=i;
                st[i].x++;  //树状数组,不要有0
                st[i].y++;
            }
        memset(num,0,sizeof(num));
        memset(c,0,sizeof(c));
        sort(st+1,st+1+n,cmp);
        for(int i=1;i<=n;i++)
        {
            if(i!=1&&st[i].x==st[i-1].x&&st[i].y==st[i-1].y)
            {
                num[st[i].id]=num[st[i-1].id];  //相同的点,就继承它的数目就可以了。
            }
            else
            {
                num[st[i].id]=getsum(st[i].x);
            }
            update(st[i].x);
        }
        for(int i=1;i<n;i++)
            cout<<num[i]<<" ";
            cout<<num[n]<<endl;
    }
}
目录
相关文章
|
10月前
|
Python
一个羊了个羊的游戏脚本
一个羊了个羊的游戏脚本
84 3
|
11月前
|
JSON 小程序 JavaScript
羊了个羊【游戏】
羊了个羊【游戏】
53 0
|
2月前
|
索引
羊了个羊游戏开发实战教程(2):随机生成卡牌
羊了个羊游戏开发实战教程(2):随机生成卡牌
46 0
|
2月前
羊了个羊游戏开发实战教程(3):卡牌的放置和消除
羊了个羊游戏开发实战教程(3):卡牌的放置和消除
40 0
从开发角度看羊了个羊
从开发角度看羊了个羊
93 0
你也能做个羊了个羊游戏2:随机生成卡牌
羊了个羊游戏第二关过不去?不如自己通过学习动手做一个第二关能够闯过去的羊游戏~ 欢迎点赞分享,鼓励小蚂蚁继续创作。 更系统全面的课程,一年不限次数的咨询,学习社群等一整套的服务,
61 0
|
索引
你也能做个羊了个羊游戏系列教程2:随机生成卡牌
上一节教程中我们使用的红色和白色的方块代表卡牌,为了区分不同的牌,我找了一些可爱的小动物头像(共 10 个),我们仍然是创建两层堆叠牌,不过这次这些牌会显示出不同的类型(不同的动物头像),每次生成的牌都是随机的,也就说即使是同一个关卡,每次打开也都会不一样。 接下来我们就直接开始吧! 还是先从理论开始,一共有 10 种不同类型的小动物卡牌,我们先给它们依次编上序号。
144 0
你也能做个羊了个羊游戏系列教程3:卡牌的放置和消除
终于要写第三篇教程了,中间拖的时间有点儿长,以至于我的好几位学员等不及已经自己做出来了。这是一件让我感到非常高兴的事情。一位学员从零基础开始学,到最后有一定的能力自己琢磨着把游戏做出来,这是一件不论是对学员来讲,还是对我来讲都是值得骄傲的事情。因为他们已经掌握了自己学习和前进的方法,我认为这种自发的能动性是推动一个人自主学习或者前进的最强大的动力。
199 0
你也能做个羊了个羊游戏3:卡牌拾取和删除
羊了个羊游戏第二关过不去?不如自己通过学习动手做一个第二关能够闯过去的羊游戏~ 欢迎点赞分享,鼓励小蚂蚁继续创作。
58 0