先把一定要减的费用先减掉,就是b*s*len(上坡路),下坡路就设一个初速度,使耗油为0,如果没油了,就无法到达

然后考虑加速

对于长度为len的路,增加v的速度需要len*a*v的油,与len成正比

然后又因为原来的速度越小,增加等量v的增益越高,所以每次都从最小的速度开始加(不超过第二小),还有不要超过vmax

 const
maxn=;
var
t,n:longint;
a,b,vmax,f:double;
len,s,v:array[..maxn]of double; procedure init;
var
i:longint;
x,y:double;
begin
read(a,b,vmax,f,n);
for i:= to n do
begin
read(x,y);
len[i]:=sqrt(sqr(x)+sqr(y))/;
s[i]:=y/x;
if s[i]> then f:=f-len[i]*b*s[i];
if s[i]< then v[i]:=-b*s[i]/a
else v[i]:=;
end;
end; procedure swap(var x,y:double);
var
t:double;
begin
t:=x;x:=y;y:=t;
end; procedure sort(l,r:longint);
var
i,j:longint;
y:double;
begin
i:=l;
j:=r;
y:=v[(l+r)>>];
repeat
while v[i]<y do
inc(i);
while v[j]>y do
dec(j);
if i<=j then
begin
swap(s[i],s[j]);
swap(v[i],v[j]);
swap(len[i],len[j]);
inc(i);
dec(j);
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end; procedure work;
var
i,j:longint;
sum:double;
begin
sort(,n);
for i:= to n do
if v[i]>vmax then v[i]:=vmax;
v[n+]:=vmax;
sum:=;
for i:= to n do
begin
sum:=sum+len[i];
if v[i]<>v[i+] then
begin
if f>=(v[i+]-v[i])*sum*a then
begin
f:=f-(v[i+]-v[i])*sum*a;
v[i]:=v[i+];
end
else
begin
v[i]:=v[i]+f/(sum*a);
break;
end;
end;
end;
for j:=i- downto do
v[j]:=v[j+];
if v[]= then
begin
writeln('IMPOSSIBLE');
exit;
end;
sum:=;
for i:= to n do
sum:=sum+len[i]/v[i];
writeln(sum::);
end; begin
read(t);
while t> do
begin
init;
if f< then writeln('IMPOSSIBLE')
else work;
dec(t);
end;
end.

2328: [HNOI2011]赛车游戏 - BZOJ的更多相关文章

  1. 【BZOJ2328】 [HNOI2011]赛车游戏

    BZOJ2328 [HNOI2011]赛车游戏 前言 这道题目我真的佛了,卡精度+卡时间这就是下一个聊天鬼才. Solution 首先可以二分出最大速度,然后考虑下坡的话可能有更好的解,然后这样子算一 ...

  2. BZOJ2328: [HNOI2011]赛车游戏

    BZOJ2328: [HNOI2011]赛车游戏 Description 题解Here! 一开始被题面那一长串的描述吓到了,一直没敢做... 然后尝试着硬着头皮读懂题面. 然后...这不是贪心么??? ...

  3. [HNOI2011]赛车游戏

    题目描述 名歌手LAALA最近迷上了一款赛车游戏,游戏中开车的玩家在不同的路段需要选择不同的速度,使得自己在最短的时间内到达终点.开始游戏时,车内的初始油量为f,所以游戏的关键是如何在速度和耗油量之间 ...

  4. 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景

    最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现.原本在C#中很方便地就可以完成的一个小场景,使用Unity3 ...

  5. Unity赛车游戏之移动

    这个赛车游戏真是让我费劲脑汁啊.尤其是写这种系统化的东西. 目前漂移还没找到更好的算法,不过基本的移动还是可以做到的. 别看就光是个移动,其实也是很费事的. Unity给了个对于赛车系统很好的碰撞组件 ...

  6. 使用Unity3D引擎开发赛车游戏

    Car Tutorial 在Unity3D的Asset Store有一个赛车的Demo —— Car Tutorial,看起来特别酷的赛车游戏Demo,不过我还没有下载下来,因为在公司下载Assets ...

  7. unity3d 赛车游戏——复位点检测优化、反向检测、圈数检测、赛道长度计算

    接着上一篇文章说 因为代码简短且思路简单 所以我就把这几个功能汇总为一篇文章 因为我之前就是做游戏外挂的 经过验证核实,**飞车的复位点检测.圈数检测就是以下的方法实现的 至于反向检测和赛道长度计算, ...

  8. unity3d 赛车游戏——复位点检测

    一直没有时间写博客 昨天我的CarWaypoints插件也告一段落了 今年没回家,过年就我一个人 挺无聊的,那就休息一天写几篇博客吧 我的代码可能很少,但是思路很重要 希望不懂的朋友别只copy代码 ...

  9. 一款c语言实现的赛车游戏

    博主学习c语言已经有一段时间了,出于对自己学习检验的目的,自制了一款c语言赛车游戏. 由于本质是检验和尝试,所以并没有注重游戏的界面.下文是开发文档,在博主的github网页可以下载源码,注意本项目使 ...

随机推荐

  1. RedirectFromLoginPage和FormsAuthenticationTicket的区别

    如果你对.net身份验证不是很清晰,请看本文.本文用简单明了的语言,让你对RedirectFromLoginPage和FormsAuthenticationTicket有一个完整的认识. 1)Form ...

  2. 每天一道LeetCode--119.Pascal's Triangle II(杨辉三角)

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  3. 在Ubuntu中USB连接手机调试

    1.打开手机USB调试功能 显示“开发者选项”(开发者选项默认隐藏,一般需要进入到“设置”-->“关于手机”连续点击七次,可将“开发者选项显示出来”) 将“开发者选项”设置为“开启”状态 打开U ...

  4. php5.4window下连接mssql

    第一步 下载 http://www.microsoft.com/en-us/download/details.aspx?id=20098 [PHP_PDO_SQLSRV] extension=php_ ...

  5. asterisk 语音文件转换

    Centos wav to sln sox foo-in.wav -t raw -r 8000 -s -2 -c 1 foo-out.sln 当前目录下所有语音wav文件 转换成sln for a i ...

  6. Cocos2d-x中SQLite数据库管理工具

    数据库创建完成后,我们可能需要看看数据库中数据是否成功插入,很多人喜欢使用图形界面工具来管理SQLite数据库.SQLite图形界面管理工具有很多,我推荐使用SQLiteStudio工具,下载地址ht ...

  7. Cocos2d-x中停止播放背景音乐

    停止背景音乐播放代码放置到什么地方比较适合呢?例如:在HelloWorld场景中,主要代码如下: bool HelloWorld::init() { return true; } void Hello ...

  8. C#学习笔记之线程 - 高级主题:非阻塞同步

    非阻塞同步 - Nonblock Synchronization 前面提到,即使在简单的赋值和增加一个字段的情况下也需要处理同步.尽管,使用锁可以完成这个功能,但是锁必定会阻塞线程,需要线程切换,在高 ...

  9. oracle手动启动服务

    开始-控制面板->管理工具->服务->右键属性 oracle服务设定都是手动启动的,开机时只需要启动3个服务就好了: OracleOraDb11g_home1ClrAgent Ora ...

  10. C++对象的JSON序列化与反序列化探索

    一:背景 作为一名C++开发人员,我一直很期待能够像C#与JAVA那样,可以轻松的进行对象的序列化与反序列化,但到目前为止,尚未找到相对完美的解决方案. 本文旨在抛砖引玉,期待有更好的解决方案:同时向 ...