登山机器人问题(本题满分40分)(福建04年省选题目)noip提高组难度
来源:互联网 发布:pc蛋蛋手机源码 编辑:程序博客网 时间:2024/04/30 02:59
登山机器人问题(本题满分40分)(福建04年省选题目)noip提高组难度
?问题描述:
登山机器人是一个极富挑战性的高技术密集型科学研究项目。它涉及小车机械、飞行器控制、机器人学、机电一体化、单片机、数据融合、精密仪器、实时数字信号处理、图像处理与图像识别、知识工程与专家系统、决策、轨迹规划、自组织与自学习理论、多智能体协调、以及无线通讯等多项理论和技术,是一个典型的智能机器人系统。登山机器人为研究发展多智能体系统和多机器人之间的合作与对抗提供了生动的研究模型。
登山机器人可以携带有限的能量。在登山过程中,登山机器人需要消耗一定能量,并且可以在机器人之间通过接触传递能量。用多个登山机器人接力登山可以极大地提高登山机器人的攀登高度。
?编程任务:
给定n个登山机器人(1<n<100)。第i个登山机器人最多可以携带xi单位的能量,每攀高1米需要消耗能量yi单位。开始登山时n个登山机器人均处于同一水平高度0,并且每个登山机器人初始时都携带了最多的能量。计算用这n个登山机器人进行不返回的接力登山可攀登的最高的高度。
?数据输入:
输入数据由文件名为INPUT3.*的文本文件提供。
n 第1行中的整数为登山机器人个数n;
n 接下来的n行中每行一个整数,依次为x1,x2,x3,...,xn;
n 最后的n行中每行一个整数,依次为y1,y2,y3,...,yn。
?结果输出:
程序运行结束时,在屏幕上输出所找到的这n个登山机器人可攀登的最高的高度,精确到小数点后2位。
输入文件示例
输出示例
INPUT3.001
7500.00
2
50
50
0.01
0.01
(这个地儿题目都说了保留两位,数据却没写上= =)
题解:拿两个机器人的推广一下:
易想到尽量将燃料用完,尽量让耗油少的用,依此思路进行推导。
当有两个机器人时,临界条件就是2号剩余的油恰好能够把1号的油箱给装满
时,2号剩余的1号消耗的,此时可将2号的油传给1号,就又可上升x1/y1
假设x1/y1+x2/(y1+y2)>x2/y2+x1/(y1+1y2),化简后,可得到x1/y1^2>x2/y2^2
这样将所化简的关键字排序后,贪心选取即可得到最优值。
选取的方法为每次把x[i]/y[i]^2最小的数丢掉,因为已经排序,所以把它的油加到前面i-1个里面。像前面一样,在临界条件,得到一个恰好把剩下i-1个的油箱装满时上升的高度h,h:=x[i]/(y[1]+y[2]+...+y[i]);
ac程序:
var x,y:array[0..100] of real;sum:real;n,m,i,j,k:longint;function f(i,j:longint):boolean;begin if x[j]*y[i]*y[i]>x[i]*y[j]*y[j] then exit(true); exit(false);end;begin assign(input,'p3.in'); assign(output,'p3.out'); reset(input); rewrite(output); readln(n); for i:=1 to n do readln(x[i]); for i:=1 to n do readln(y[i]); for i:=1 to n-1 do for j:=i+1 to n do if f(i,j) then begin sum:=x[i]; x[i]:=x[j]; x[j]:=sum; sum:=y[i]; y[i]:=y[j]; y[j]:=sum; end; for i:=2 to n do y[i]:=y[i-1]+y[i]; sum:=0; for i:=1 to n do sum:=sum+x[i]/y[i]; writeln(sum:0:2); close(input); close(output);end.
- 登山机器人问题(本题满分40分)(福建04年省选题目)noip提高组难度
- 机器人登山问题(c++)
- 飞翔 noip提高组难度
- 算法作业(机器人登山问题,求逆序数)
- 登山机器人问题
- 登山机器人问题
- 分糖果问题(难度:1颗星)
- 机器人登山问题Java版
- 隐形的翅膀 接近noip提高组难度
- NOIP 提高组问题求解合集(2009-2012)
- 2016NOIP提高组复赛山东赛区满分选手代码片段汇编
- 贪心法解登山机器人问题
- 南邮 OJ 1275 登山机器人问题
- 2017.10.26试题(NOIP DAY1难度)
- 2017.10.27试题(NOIP DAY2难度)
- Android:Android-x86使用心得(满分100分贴)
- 第二节蓝桥杯第九题 程序设计(满分16分)
- 第二节蓝桥杯第九题 程序设计(满分16分)
- 解决函数中返回局部指针变量的问题,加深理解《堆和栈》问题。
- 飞翔 noip提高组难度
- eclipse中添加jar包到classpath的具体操作
- 用 eventfd 在线程之间通信
- 数组里a和&a的区别
- 登山机器人问题(本题满分40分)(福建04年省选题目)noip提高组难度
- java_载入图片的几种常用方法
- Android中asset文件夹和raw文件夹区别
- 安装office2007失败解决方法
- 隐形的翅膀 接近noip提高组难度
- CBrush类
- 火烧赤壁(vijos某次模拟赛题目noip2004校门口外的树加强版)略高于noip普及组难度
- 添边问题 解题报告
- 德州仪器的bug也碰到了