• ACM 心急的C小加


    心急的C小加

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:4
     
    描述

    C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?

     
    输入
    第一行是一个整数T(1<T<1500),表示输入数据一共有T组。
    每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒。接下来的一行分别输入N个木棒的L,W(0 < L ,W <= 10000),用一个空格隔开,分别表示木棒的长度和质量。
    输出
    处理这些木棒的最短时间。
    样例输入
    3 
    5 
    4 9 5 2 2 1 3 5 1 4 
    3 
    2 2 1 1 2 2 
    3 
    1 3 2 2 3 1 
    
    样例输出
    2
    1
    3
    贪心问题+最长递增子序列问题
    将输入的数据按照长度进行排序,然后根据重量选择递增的最长子序列,不同的子序列之间耗费一个单位的时间
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <utility>
    using namespace std;
    struct Stick{
        int l,w;
        Stick(int ll = 0 , int ww = 0):l(ll), w(ww){}
        bool operator<(const Stick& a) const{
            if(l!=a.l) return l < a.l;
            else return w < a.w;
        }
    };
    int main(){
        int T;
        cin >> T;
        for(int icase = 0; icase < T; icase++){
            int n;
            cin >> n;
            vector<Stick> stick(n);
            for(int i = 0 ; i < n; ++ i)
                cin >>  stick[i].l >> stick[i].w;
            sort(stick.begin(),stick.end());
            int cnt = 0;
            for(int i = 0 ; i < n; ++ i){
                if(stick[i].w){
                    cnt++;
                    int minWeight = stick[i].w;
                    stick[i].w = 0;
                    for(int j = i+1; j < n; ++ j){
                        if(stick[j].w >= minWeight){
                            minWeight =stick[j].w;
                            stick[j].w = 0;
                        }
                    }
                }
            }
            cout<<cnt<<endl;
        }
    }
    
    
    
     
  • 相关阅读:
    [C#] 等待启动的进程执行完毕
    C# 、winform 添加皮肤后(IrisSkin2) label设置的颜色 无法显示
    Mysql 备份
    Mysql 慢查询日志配置
    Mysql 忘记密码处理配置
    PHP-FPM 慢执行日志、网站隔离配置
    PHP-FPM 设置多pool、配置文件重写
    Nginx 代理配置
    Nginx 301与302配置
    Nginx URL跳转
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3664337.html
Copyright © 2020-2023  润新知