火灾逃生(一维版)

Description
某天晚上,软院某条狭窄的走廊突然发生了火灾,该走廊只有首尾两个出口,且因为过于狭窄,两个人不能并排。假设t=0的时候发生了火灾,此时有N个人在长度为L的走廊里,走廊的最左端的坐标是(0,0),最右端的坐标是(L,0), 第ii个人的位置是(Di,0)。面朝左边或者右边,用0和1分别表示面朝左边和右边。假设从火灾发生的时刻开始,每个人都朝着t=0时面朝的方向以1的速度前进。当两个人相遇的时候两个人会立马掉头回跑。为了所有人的安全,请计算出所有人离开走廊时的时刻。(初始状态下不会有两个人在同一个位置。)
Input
第一行有一个整数T(T<10)表示有T个案例,每个案例的第一行有两个整数N(0<N<10^5)
和L(0<L<10^5)意义如上所述,接下来是N行,第i行有两个数Di和z (0<Di<L),表示第i个人的位置是(Di,0)和z(0或1,0表示面朝向左,1表示面朝向右)。
Output
输出所有人都离开走廊的时间
Sample Input 1
1
2 10
5 1
8 0
Sample Output 1
8
分析总结:
最后让求的是时间,当两个人碰面时,可以考虑为没有掉头,直接穿过去就行,就相当于换人也行。反正让求的是最后的时间嘛。
求全部人都离开走廊的时间,也就是求最慢的内个人出去的时间,即每个人面向出口的距离的最大值(速度为1)
分情况考虑:0是向左走,即保留坐标的最大值
1是向右走,即保留坐标的最小值,注意要用走廊的长度减去此坐标
不说了,上代码:

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int ans=0;
    while(n--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        while(a--)
        {
            int c,d;
            scanf("%d%d",&c,&d);
            if(d==0)
            {
                if(c>ans)ans=c;
            }
            if(d==1)
            {
                c=b-c;
                if(c>ans)ans=c;
            }
        }printf("%d",ans);
    }return 0;
}

以后就,直接用c吧
还有,以后要注意: 变量名的问题 ,,,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值