zoukankan      html  css  js  c++  java
  • 【贪心】Emergency Evacuation

    题目

    大致题意

    把指定的人从同一出口送出车外,且同一位置不能同时有两个人,求所需的最短时间。

    分析

    第一感觉就是利用贪心思想解决问题,但是这道题的数据范围用模拟的话肯定是会爆掉的,所以这是不可取的。
    我们可以反过来想,把所有人从出口送回原位,然后根据距离进行降序排序,离出口远的人先进,其他人后进,这样就能使时间最小化,得出最优解。

    代码

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<map>
    using namespace std;
    
    
    struct per{
      int r,c;//原位置
      int d;//原位置离出口的距离
    };
    struct per pe[500005];
    
    bool cmp(struct per a,struct per b){
        return a.d>b.d;
    }
    
    int main(){
        int r,s,p,i;
        cin>>r>>s>>p;
        for(i=0;i<p;i++)    {
            cin>>pe[i].r>>pe[i].c;
            if(pe[i].c>s)
                pe[i].d=(pe[i].c-s)+(r-pe[i].r+1);
            else
                pe[i].d=(s-pe[i].c+1)+(r-pe[i].r+1);
        }
        sort(pe,pe+p,cmp);
        int k=1;//在队列中等待进入车厢的时间
        int maxtime=pe[0].d;
        for(i=1;i<p;i++){
            if(pe[i].d+k>maxtime)
                maxtime=pe[i].d+k;
            k++;
        }
        cout<<maxtime<<endl;
        return 0;
    }
  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/Vocanda/p/12679859.html
Copyright © 2011-2022 走看看