zoukankan      html  css  js  c++  java
  • P1233 木棍加工

      我是想写写dp来着……所以我查了标签是dp的题。

      在做了三道蓝题之后,蒟蒻的我想做一道简单点的题恢复自信qwq……

      于是,这道题,我怎么也下过不出转移方程……但是我忽然发现,这道题根本就不用dp!贪心 + 排序即可!

      因为我们一定是要时间  < n 的,所以我们就算最后什么也没找到,也不会比 n 更差,那么我们先按照其中一个值排序,如果想要有比n更好的解,就一定要按照这个顺序去找!

      那么就等价于,我们就可以只看其中一个值就行!

      owo

      于是这道题就变成了排序,我们想要最少的下降序列,那么就是求最长的上升(严格上升)序列!

      不懂题解里的大神都是怎么想的qwq……

      下面贴代码;

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    using namespace std;
    #define maxn 5500
    struct node
    {
        int l,r;
    } a[maxn];
    int n;
    bool cmp(node x,node y)
    {
        return x.l>y.l;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        scanf("%d%d",&a[i].l,&a[i].r);
        sort(a+1,a+n+1,cmp);
        int cnt=0;
        int b[maxn],c[maxn];
        for(int i=1;i<=n;i++)
        b[i]=a[i].r;
        int len=1;
        c[1]=b[1];
        for(int i=2;i<=n;i++)
        {
            if(b[i]>c[len])
            {
                c[++len]=b[i];
                continue;
            }
            int p=lower_bound(c+1,c+1+len,b[i])-c;
            c[p]=b[i];
        }
        printf("%d",len);
        return 0;
    }
  • 相关阅读:
    rac启动维护笔记
    cache-fusion笔记
    RAC配置笔记
    记一次异机rman还原后的操作
    索引小结
    DBlink的创建与删除
    小说经典语录
    SQL通配符
    ArrayList集合详解
    Oracle数据库四种数据完整性约束
  • 原文地址:https://www.cnblogs.com/popo-black-cat/p/10338502.html
Copyright © 2011-2022 走看看