• 【洛谷 1007】独木桥


    题目背景

    战争已经进入到紧要时间。你是运输小队长,正在率领运输部队向前线运送物资。运输任务像做题一样的无聊。你希望找些刺激,于是命令你的士兵们到前方的一座独木桥上欣赏风景,而你留在桥下欣赏士兵们。士兵们十分愤怒,因为这座独木桥十分狭窄,只能容纳11个人通过。假如有22个人相向而行在桥上相遇,那么他们22个人将无妨绕过对方,只能有11个人回头下桥,让另一个人先通过。但是,可以有多个人同时呆在同一个位置。

    题目描述

    突然,你收到从指挥部发来的信息,敌军的轰炸机正朝着你所在的独木桥飞来!为了安全,你的部队必须撤下独木桥。独木桥的长度为LL,士兵们只能呆在坐标为整数的地方。所有士兵的速度都为11,但一个士兵某一时刻来到了坐标为00或L+1L+1的位置,他就离开了独木桥。

    每个士兵都有一个初始面对的方向,他们会以匀速朝着这个方向行走,中途不会自己改变方向。但是,如果两个士兵面对面相遇,他们无法彼此通过对方,于是就分别转身,继续行走。转身不需要任何的时间。

    由于先前的愤怒,你已不能控制你的士兵。甚至,你连每个士兵初始面对的方向都不知道。因此,你想要知道你的部队最少需要多少时间就可能全部撤离独木桥。另外,总部也在安排阻拦敌人的进攻,因此你还需要知道你的部队最多需要多少时间才能全部撤离独木桥。

    输入输出格式

    输入格式:

    第一行:一个整数LL,表示独木桥的长度。桥上的坐标为11…LL

    第二行:一个整数NN,表示初始时留在桥上的士兵数目

    第三行:有NN个整数,分别表示每个士兵的初始坐标。

    输出格式:

    只有一行,输出22个整数,分别表示部队撤离独木桥的最小时间和最大时间。22个整数由一个空格符分开。

    输入输出样例

    输入样例#1: 复制
    4
    2
    1 3
    
    输出样例#1: 复制
    2 4

    说明

    初始时,没有两个士兵同在一个坐标。

    数据范围N le L le 5000NL5000。

    题解:easy的贪心

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int l,n;
    int x[50010]; 
    int main(){
        cin>>l>>n;
        int ans1=0;
        for(int i=1;i<=n;i++){
            cin>>x[i];
            ans1=max(ans1,min(x[i],l-x[i]+1));
        }
        int ll=l+1,rr=0;
        for(int i=1;i<=n;i++){
            ll=min(ll,x[i]);
            rr=max(rr,x[i]);
        }
        int ans=max(rr,l-ll+1);
        cout<<ans1<<' '<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    HTML DOM 12 表格排序
    HTML DOM 10 常用场景
    HTML DOM 10 插入节点
    HTML DOM 09 替换节点
    HTML DOM 08 删除节点
    HTML DOM 07 创建节点
    022 注释
    024 数字类型
    005 基于面向对象设计一个简单的游戏
    021 花式赋值
  • 原文地址:https://www.cnblogs.com/wuhu-JJJ/p/11185781.html
Copyright © 2020-2023  润新知