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

    这是一个经典的贪心+DP。
    首先我们读题,可以发现一个显然的贪心结论:如果我们把最长最宽的棍子放在前面,时间用的岂不是最少?
    解法就是上述的问题。直接排序(排序在长度相同的时候就用宽度),然后比较宽度,存一个最小的宽度。考虑设置一个vis数组,如果之后的棍子没被vis过而且宽度更小,我们就更新宽度顺便打上标记。做完这些之后,遍历数组,如果vis没被打上标记,说明这玩意没被前面更大的更新过,ans++即可。
    Code:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define ll long long
    #define maxn 100001
    using namespace std;
    struct Gunzi{
        int l,w;
    }g[maxn];
    int n,vis[maxn],li,wi,ans;
    inline bool cmp(Gunzi a,Gunzi b){
        if(a.l==b.l) return a.w>b.w;
        return a.l>b.l;
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++){
            int x,y;
            cin>>x>>y;
            g[i].l=x;
            g[i].w=y;
        }
        sort(g+1,g+1+n,cmp);
        for(int i=1;i<=n;i++){
            if(!vis[i]){
                wi=g[i].w;
                for(int j=i+1;j<=n;j++){
                    if(g[j].w<=wi&&!vis[j]){
                        vis[j]=1;
                        wi=g[j].w;
                    }
                }
            }
        }
        for(int i=1;i<=n;i++){
            if(!vis[i]) ans++;
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    worker.properties配置
    uriworkermap.properties配置
    Apache Tomcat连接器-Web服务器操作方法
    x01.os.14: 时间都去哪儿了
    x01.os.13: 文件系统
    x01.os.12: 在 windows 中写 OS
    x01.os.11: IPC 路线图
    x01.os.10: 输入输出
    x01.os.9: 进程切换
    x01.os.8: 加载内核
  • 原文地址:https://www.cnblogs.com/kenlig/p/9822592.html
Copyright © 2011-2022 走看看