• BZOJ1029


    传送门:BZOJ1029

    还记得线段覆盖吗?

    我们将建筑物按Deadline排序,然后扫描排序后数组,假设当前建筑物能够被修建。则修建,否则。假设当前建筑物所用时间小于修过的建筑物最大时间。则放弃最大时间,改修它。
    这个算法的正确性是显然的。


    代码上的小细节见下:

    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    #include <queue>
    using namespace std;
    
    struct Node{
        int Needtime;
        int Deadline;
        bool operator <(const Node& a)const{
            return Deadline<a.Deadline;
        }
    };
    
    Node da[150005];
    int n;
    priority_queue<int> Q;
    
    void Readdata()
    {
        freopen("loli.in","r",stdin);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&da[i].Needtime,&da[i].Deadline);
    }
    
    void Solve()
    {
        sort(da+1,da+1+n);
        int used=0;Q.push(0);
        for(int i=1;i<=n;i++)
            if(used+da[i].Needtime<=da[i].Deadline){
                Q.push(da[i].Needtime);
                used+=da[i].Needtime;
            }
            else
                if(da[i].Needtime<Q.top()){
                    used+=(da[i].Needtime-Q.top());
                    Q.pop();
                    Q.push(da[i].Needtime);
                }
        printf("%d",Q.size()-1);
    }
    
    void Close()
    {
        fclose(stdin);
        fclose(stdout);
    }
    
    int main()
    {
        Readdata();
        Solve();
        Close();
        return 0;
    }
  • 相关阅读:
    C#中的Json序列化
    c#在sqlserver中使用EF框架
    Mvc中模拟模型
    localdb启动
    List泛型用法(半转载半原创)
    C#中真正的属性
    委托的简介、使用和简单事件
    类嵌套_list泛型_餐馆点菜例
    JavaIO
    JavaIO
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7076513.html
Copyright © 2020-2023  润新知