B2066 救援

思路

把每个人的时间拆成几部分,设共有t人

  1. 上、下船: $1t+0.5t=1.5t$
  2. 大本营、屋顶之间的来回:如图,$x,y$ 为屋顶坐标

根据勾股定理可知:$x^2+y^2=n^2$

所以$n=\sqrt{x^2+y^2}$,时间为路程÷速度,$\sqrt{x^2+y^2}/50$,注意要跑两遍

总时间为:$1.5t+2\sqrt{x^2+y^2}/50$

代码

#include <iostream>
#include <cmath>
using namespace std;
double n, x, y, t, s;
int main()
{
    cin >> n;
    for(int i = 0;i < n;++i)
        cin >> x >> y >> t, s += 1.5 * t + 2 * sqrt(x * x + y * y) / 50; //代入上面的公式
    cout << int(ceil(s)); //向上取整,要转换成int
    return 0;
}
posted @ 2021-07-13 19:51  5k_sync_closer  阅读(11)  评论(0编辑  收藏  举报  来源