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;
    }
  • 相关阅读:
    Iconfont在Vue中的使用
    yarn安装依赖报错
    动漫
    伤痛的魅力。绷带男子特辑
    记STM32F103C8T6+STLINK下载器在Keil中的设置
    JQuery浮动对象插件
    树莓派RTL8723BU_LINUX驱动安装
    python虚拟环境相关设置备忘
    解决树莓派控制台命令行乱码
    python模块wifi使用小记
  • 原文地址:https://www.cnblogs.com/Vocanda/p/12679859.html
Copyright © 2011-2022 走看看