• 工作排序问题 poj2376


    代码 https://www.cnblogs.com/oscar-cnblogs/p/6295076.html

    poj2376题 

    题意:农夫John和他的cows系列。这次cows们被John命令cleaning shifts,给你总区间时间,和每头cow负责clean的子区间时段,问怎样安排可以使最少的cow打扫于整个时间区间。
    思路:典型贪心。先对所有cow开始clean的时间升序排序,然后再依次遍历每头cow,保证开始时间在上一头cow时段内,使结束时间最长。(注意:不重叠但相邻也成立)一旦超出上一头cow的结束时段,更新cow,并继续向下遍历。

    输入的第一行 n,T n表示有几个区间,T表示终点是多少,从一开始到T的区间全覆盖,下面2~2+n行是输入的区间,求最小覆盖区间数

    输入

    3 10
    1 7
    3 6
    6 10

    输出

    2
    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    
    using namespace std;
    
    typedef long long ll;
    ll T,N;
    struct Cow
    {
        ll st,ed;
        bool operator < (Cow c) const//按照结束时间升序排列 重载操作符
        {
            return st < c.st;
        }
    } cow[25005];
    
    //贪心策略 在合适的工作时间内 选择结束时间最晚的
    
    int main()
    {
       cin>>N>>T;
        for (int i = 0; i < N; i++)
        {
            scanf("%lld%lld", &cow[i].st, &cow[i].ed);
        }
        //printf("%d
    ", solve());
        sort(cow, cow+N);
        cow[N].st = 0x7fffffff;//因为后面要判断cow[i+1]
        bool found = false;
        ll t = 0, temp = 0;
        int ans = 0;
        for (int i = 0; i < N; i++)//这样只用找一遍即可,从小到大排列 不断的扩大t 扩大课工作时间的区间
        {
            //  found = false;
            if (cow[i].st <= t + 1)
            {
                if(cow[i].ed > temp)
                {
                    temp = cow[i].ed;
                    found = true;
                }
                if (cow[i+1].st > t+1 && found)//如果下一个 区间左端点 在t的右边 那么所找到的这个点是必然要要的
                {
                    t = temp;
                    ans++;
                    found = false;//t点更新 就去找下一个区间 这个之前放错了位置 每一次found都会改变t值
                }
            }
        }
        if (t<T)
            printf("-1
    ");
        else
            printf("%d
    ",ans);
        return 0;
    }

     这个代码看了之后也不太理解,先记在这,等把工作排序问题搞懂再来看看理解理解吧

    另一组输入数据可以调试看看代码的实际运行

    3 10

    1 6

    1 5

    6 10

    输出也是

    2

  • 相关阅读:
    关于W3Cschool定义的设计模式--常用的9种设计模式的介绍
    正则得介绍和使用——表单验证
    DOM的高级操作-一种JS控制元素的视觉假象
    如何理解JS中this指向的问题
    Vulkan中的实时软阴影与硬件优化
    TensorFlow Distribution(分布式中的数据读取和训练)
    TensorFlow白皮书
    TensorFlow Data模块
    新闻标签提取的评价方法
    基于TF-IDF的新闻标签提取
  • 原文地址:https://www.cnblogs.com/someonezero/p/12802424.html
Copyright © 2020-2023  润新知