zoukankan      html  css  js  c++  java
  • [swustoj 585] 倒金字塔

    倒金字塔(0585)

    Time limit(ms): 3000 Memory limit(kb): 65535 Submission: 208 Accepted: 48
     
    Description
    SWUST国的一支科学考察队到达了举世闻名的古埃及金字塔。 
    关于金字塔的建造一直是一个未解之谜, 有着“西方史学之父”之称的希罗多德认为,金字塔的建造是人力和牲畜,花费20 年时间从西奈半岛挖掘天然的石头运送到埃及堆砌而成。也有不少人认为是外星人修建的。人们发现胡夫金字塔的经线把地球分成东、西两个半球,它们的陆地面积是相等的,这种“巧合”大概是外星人选择金字塔建造地点的用意。法国化学家戴维·杜维斯则认为,建造金字塔的巨石不是天然的,而是人工浇筑的。 
    SWUST 国科考队的队员们正准备研究戴维·杜维斯提出的假说。为了研究这种假说,他们需要用到“倒金字塔模型”。所谓倒金字塔模型,即金字塔由N 层人工浇筑的巨石堆砌而成,非底层的任意一层巨石的长度和宽度都必须要小于等于它下面的一层巨石的长度和宽度。 
    现在,科考队队员们打算用手里仅有N 块木板去模拟这个倒金字塔模型。请计算出科考队队员们能够构建的倒金字塔模型的最大高度。
     
    Input
    测试数据的第1 行,为一个正整数N(N <= 100000),表示科考队队员们手里一共有N 块木板。 
    接下来N 行,每行两个数:a,b( a, b <= 100000),分别表示一块木板的长度与宽度。
     
    Output
    只有一个正整数,为最多可以堆叠的倒金字塔的高度。所有的木板厚度均为1。
     
    Sample Input
    3
    3 2
    1 1
    2 2
     
    Sample Output
    1
    2
    3
     
    哎,做了一道题,发现你原来写的一直当模板的东西写错了,是一种多么悲伤的事、
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define N 100005
    
    struct Rect
    {
        int x,y;
        bool operator<(const Rect &t)const
        {
            if(x!=t.x) return x<t.x;
            return y<t.y;
        }
    }s[N];
    
    int n;
    int len;
    int dp[N];
    
    int up_bound(int k)
    {
        int l=1,r=len+1;
        while(l<r)
        {
            int m=(l+r)/2;
            if(dp[m]<=k) l=m+1;
            else r=m;
        };
        return l;
    }
    void solve()
    {
        len=1;
        dp[1]=s[1].y;
        for(int i=2;i<=n;i++)
        {
            if(s[i].y>=dp[len]) dp[++len]=s[i].y;
            else
            {
                int pos=up_bound(s[i].y);
                dp[pos]=s[i].y;
            }
        }
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=1;i<=n;i++)
            {
                scanf("%d%d",&s[i].x,&s[i].y);
            }
            sort(s+1,s+n+1);
            solve();
            printf("%d
    ",len);
        }
        return 0;
    }
    趁着还有梦想、将AC进行到底~~~by 452181625
  • 相关阅读:
    android systembar tabletUI
    linux mv
    修改framework/base下面的api要注意要修改的地方
    git 从远程主服务器当中创建新分支
    修改android framework 添加service
    DUILIB 界面基本知识
    Duilib vlc c++ 字符编码
    android 应用APK使用系统APK
    linux 查找文件内容及文件
    修改android 开机动画
  • 原文地址:https://www.cnblogs.com/hate13/p/4075055.html
Copyright © 2011-2022 走看看