信奥一本通1073:救援

思路分析

1、根据题意以及给出的输入输出画出如上坐标分析图,x坐标30,y坐标40,它们跟从大本营到屋顶之间刚好形成了一个直角三角形,而且通过坐标就很容易联想到勾股定理,已知三角形两条边就可以求出第三边。

勾股定理如下:

a\^{2}+b\^{2}=c\^{2}

a边平方+b边平方=C边平方

\\sqrt{c}开根可得c边长

将x坐标和y坐标带入公式可得到从大本营到屋顶之间的总路程平方,接着将总路程平方进行开根号即可得到c边的大小。

2、得到总路程就可以求得路上花费的时间:c/50=路上时间

根据题意每人上船需要花费1分钟,下船需要花费0.5分钟,所以

路上时间+上船时间+下船时间=救援该屋顶的总时间

3、所以根据题意,输入需要救援的屋顶,然后把去该屋顶救援所花的时间计算出来,再输入下一个救援屋顶,依次类推。当把所有救援屋顶都输入完毕之后也是救援总时间计算出来之时。最后输出总救援时间即可。

复制代码
 1 #include<iostream>//C++库文件
 2 #include<math.h>//数学库文件
 3 
 4 //命名空间
 5 using namespace std;
 6 //主函数
 7 int main()
 8 {
 9   /*n屋顶,x屋顶x坐标,y屋顶y坐标,
10   z从大本营到屋顶的距离,r人数,
11   fen从起点到屋顶上船下船的时间,ztime总时间*/
12 double n,x,y,z,r,fen,ztime=0;
13 cin>>n;//输入救援屋顶数
14 for(int i=1;i<=n;i++){
15     cin>>x>>y>>r;//循环输入要救援的屋顶x坐标,y坐标,r人数
16   
17     z=x*x+y*y;//根据勾股定理求得从大本营到屋顶的总路程平方
18   
19     z=sqrt(z);//开根总路程平方获得从大本营到屋顶的路程
20   
21     fen=2*(z/50)+r+r*0.5;//计算去和回、上船、下船的时间
22   
23     ztime=ztime+fen;//加上每个屋顶救援用的时间
24 }
25 cout<<ceil(ztime);//输出总时间向上取整
26     return 0;
27 }