zoukankan      html  css  js  c++  java
  • 洛谷 P1007 独木桥

    洛谷 P1007 独木桥

    链接

    https://www.luogu.org/problem/P1007

    题目

    题目背景

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

    题目描述

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

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

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

    输入格式

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

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

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

    输出格式

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

    输入输出样例

    输入 #1

    4
    2
    1 3
    

    输出 #1

    2 4
    

    说明/提示

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

    数据范围N≤L≤5000。

    思路

    题目还行,思路也比较清晰,唯一需要注意的点就是,两个士兵相遇掉头和他们交错通过是一样的时间,所以只需要修改min为max即可。

    代码

    #include<iostream>
    #include<cmath>
    using namespace std;
    
    int main()
    {
    	int l,n;
    	cin>>l>>n;
    	int a[n];
    	for(int i=0;i<n;i++)
    	{
    		cin>>a[i];
    	}
    	
    	int mintime=0;
    	for(int i=0;i<n;i++)
    	{
    		mintime = max(mintime,min(a[i],l+1-a[i]));
    	}
    	
    	int maxtime=0;
    	for(int i=0;i<n;i++)
    	{
    		maxtime = max(maxtime,max(a[i],l+1-a[i]));
    	}
    	
    	cout<<mintime<<" "<<maxtime;
    	return 0;
    } 
    
  • 相关阅读:
    MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
    最近的一些有关MS CRM 2011的更新
    MS CRM 2011 RC中的新特性(6)——连接
    MS CRM 2011 RC中的新特性(7)—仪表板
    参加MS CRM2011深度培训课程——第一天
    MS CRM 2011插件调试工具
    MS CRM2011实体介绍(四)——目标管理方面的实体
    MS CRM 2011 RC中的新特性(3)——客户服务管理方面
    MS CRM 2011 RC中的新特性(8)—数据管理
    ExtAspNet 登陆
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11301133.html
Copyright © 2011-2022 走看看