zoukankan      html  css  js  c++  java
  • 2014 UESTC Training for Data Structures F

    F - 天下归晋

    Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
     

    晋朝统一天下已有十年,曹魏、孙吴、蜀汉这些曾与天下相争的王朝,都成为了过眼云烟,仅留于故事之中。

    “爷爷,讲嘛讲嘛,再讲一次赤壁之战的故事嘛!”

    “你个死小子,都讲多少遍了,还听!”

    “就是想听打仗嘛!”

    “你小子啊...行,我就再讲一次。当时曹公率领八十万大军欲渡长江,那船队规模才叫一壮观啊,长江都铺成陆地啰。当时是这样部署的....”

    曹操的船队自西向东铺于长江之上,为了方便指挥,每艘船都被赋予了相应的等级。这个等级由该船西南方船只的数量决定,即不比该船靠东并且不比该船靠北的船的数目。那是一只多么庞大的船队啊,只惜周郎一把火,樯橹灰飞烟灭......

    “太刺激了,打仗好好玩啊!爷爷你怎么那么清楚当时的事儿,你的腿就是赤壁时断的吗?”

    通天的火光,被激流卷去的兄弟,无数的惨叫,折断后砸向自己左腿的船柱...

    看了眼激动的孙子,老者咂咂嘴,淡淡说道:“爬山采药时摔的”。

    Input

    第一行,一个整数n表示曹军船只的数量。

    接下来n行,每行一个对整数xi,yi。表示第i艘船的坐标。

    数据保证不会有两艘船在同一位置。

    1n100000,0xi,yi32000

    Output

    n行,每行1个整数,分别表示从0级到n1级的船的数量。

    行末不要有空格。

    Sample input and output

    Sample InputSample Output
    5
    1 1
    5 1
    7 1
    3 3
    5 5
    1
    2
    1
    1
    0

    这道题其实和E - 休生伤杜景死惊开几乎是一样的,就是多了一个y值有可能是0,我们把y值全部加1就好了,直接先按x排序,x相同时按y排序,就把数据处理得跟E题一样了,于是按E题的思路打一遍就过了.

    #include <iostream>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    struct node{
        int x;
        int y;
    }chuan[100005];
    int maxn=-1;;
    bool cmp(const node &j,const node &k)
    {
        if (j.x!=k.x) return j.x<k.x;
        else return j.y<k.y;
    }
    int tree[100005]={},ans[100005]={},a[100005]={};
    int suan(int j)
    {
        int a=0;
        while (j>0){
            a+=tree[j];
            j-=j&-j;
        }
        return a;
    }
    void jia(int j)
    {
        while (j<=maxn){
            tree[j]+=1;
            j+=j&-j;
        }
    }
    int main()
    {
        int n,j;
        cin>>n;
        for (j=1;j<=n;j++) {
            scanf("%d%d",&chuan[j].x,&chuan[j].y);
            chuan[j].y++;
            if (chuan[j].y>maxn) maxn=chuan[j].y;
        }
        sort(chuan+1,chuan+n+1,cmp);
        for (j=1;j<=n;j++){
            ans[j]=suan(chuan[j].y);
            jia(chuan[j].y);
        }
        for (j=1;j<=n;j++) a[ans[j]]++;
        for (j=0;j<=n-1;j++) printf("%d
    ",a[j]);
        return 0;
    }
  • 相关阅读:
    什么是代理
    简易的屏幕适配
    SourceTree 操作简介
    project/target/product的简易区别
    iOS申请真机调试证书-图文详解
    关于UINavigationController的backBarButtonItem定制问题
    pat1008
    pat1005
    pat1019-简单模拟题
    ie6-ie8中不支持opacity透明度的解决方法
  • 原文地址:https://www.cnblogs.com/Atlantis67/p/3702761.html
Copyright © 2011-2022 走看看