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

· · 题解

思路

先算出每辆车的剩余路程 f-x_i,再除以 v_i,算出时间,找出最小值就可以了。

找最大值可以 sort,还可以用打擂台优化。

code

#include<bits/stdc++.h>
using namespace std;
struct car{
    double sum;//要用浮点数
    int id;
}a[110];
bool cmp(car x,car y){
    return x.sum>y.sum;
}
int main(){
    int n,f;
    cin>>n>>f;
    for(int i=0;i<n;i++){
        int x,vi;
        cin>>x>>vi;
        a[i].sum=(f-x)*1.0/vi;//先乘1.0
        a[i].id=i+1;
    }
    sort(a,a+n,cmp);
    cout<<a[n-1].id;
    return 0;
}