B2066 救援
思路
把每个人的时间拆成几部分,设共有t人
- 上、下船: $1t+0.5t=1.5t$
- 大本营、屋顶之间的来回:如图,$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;
}