题解:P15639 [ICPC 2022 Tehran R] Flower Festival

· · 题解

思路

一道简单题,但是有一些小坑点。

首先需要注意到题目给定位置是汽车离鲜花街起点的距离而不是离玫瑰广场的距离,汽车 i 实际行驶的距离应为 f-x_i,如果你第一个测试点就 WA 了有可能就是没注意到这一点。

由人教版物理八年级上册课本可知,做匀速直线运动的物体行驶时间的公式为 t=\Large\frac{s}{v},其中 s 表示距离(即 f-x_i),v 表示速度(即题目中的 v_i),这样我们就能计算出 t 的值了,取最小值并记录最小值何时出现即可。

注意计算 t 是实数,在计算 t 时应乘 1.0 转换成 double(或用 double 类型存 xv)且用 double 来存 t,否则可能在第三个测试点 WA。

代码

#include<cstdio>
int main()
{
    int n,f;//n、f如题
    scanf("%d%d",&n,&f);
    int now;//now存最小值出现位置
    double minn=10001;
    for(int i=1;i<=n;i++)
    {
        int x,v;
        scanf("%d%d",&x,&v);
        x=f-x;//计算s
        if(x*1.0/v<minn)//更新
        {
            minn=x*1.0/v;
            now=i;
        }
    }
    printf("%d",now);
    return 0;
}