[NOI2012] 骑行川藏

输入文件:bicycling.in   输出文件:bicycling.out   评测插件
时间限制:1 s   内存限制:128 MB

NOI2012 Day1

Description

蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨。川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行前设定好目的地、同时合理分配好自己的体力是一件非常重要的事情。
由于蛋蛋装备了一辆非常好的自行车,因此在骑行过程中可以认为他仅在克服风阻做功(不受自行车本身摩擦力以及自行车与地面的摩擦力影响)。某一天他打算骑 N段路,每一段内的路况可视为相同:对于第i段路,我们给出有关这段路况的3个参数 si , ki , vi' ,其中 si 表示这段路的长度, ki 表示这段路的风阻系数, vi' 表示这段路上的风速(表示在这段路上他遇到了顺风,反之则意味着他将受逆风影响)。若某一时刻在这段路上骑车速度为v,则他受到的风阻大小为 F = ki ( v - vi' )^2(这样若在长度为s的路程内保持骑行速度v不变,则他消耗能量(做功)E = ki ( v - vi' )^2 s)。
设蛋蛋在这天开始时的体能值是 Eu ,请帮助他设计一种行车方案,使他在有限的体力内用最短的时间到达目的地。请告诉他最短的时间T是多少。

【评分方法】
本题没有部分分,你程序的输出只有和标准答案的差距不超过0.000001时,才能获得该测试点的满分,否则不得分。

【数据规模与约定】
对于10%的数据,N=1;
对于40%的数据,N<=2;
对于60%的数据,N<=100;
对于80%的数据,N<=1000; 
对于所有数据,N <= 10000,0 <= Eu <= 108,0 < si <= 100000,0 < ki <= 1,-100 < vi' < 100。数据保证最终的答案不会超过105。

【提示】
必然存在一种最优的体力方案满足:蛋蛋在每段路上都采用匀速骑行的方式。

Input

第一行包含一个正整数N和一个实数Eu,分别表示路段的数量以及蛋蛋的体能值。 接下来N行分别描述N个路段,每行有3个实数 si , ki , vi' ,分别表示第 i 段路的长度,风阻系数以及风速。

Output

输出一个实数T,表示蛋蛋到达目的地消耗的最短时间,要求至少保留到小数点后6位。

Sample Input


3 10000
10000 10 5
20000 15 8
50000 5 6

Sample Output

12531.34496464
【样例说明】 一种可能的方案是:蛋蛋在三段路上都采用匀速骑行的方式,其速度依次为5.12939919, 8.03515481, 6.17837967。
如果不懂思想,建议去看网易公开课的MIT讲座。
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int maxn=10010;
 6 double s[maxn],k[maxn],v[maxn];
 7 double E,lam,x[maxn];
 8 int n;
 9 int main(){
10 #ifndef ONLINE_JUDGE
11     freopen("bicycling.in","r",stdin);
12     freopen("bicycling.out","w",stdout);
13 #endif
14     scanf("%d%lf",&n,&E);
15     for(int i=1;i<=n;i++){
16         scanf("%lf%lf%lf",&s[i],&k[i],&v[i]);
17         if(s[i]==0.0)i-=1,n-=1;
18     }
19     double l=-1000.0,r=0.0,tot;
20     for(int t=1;t<=60;t++){
21         lam=(l+r)/2.0;tot=0.0;
22         for(int i=1;i<=n;i++){
23             double lo=max(v[i],0.0),hi=1e20;
24             for(int j=1;j<=120;j++){
25                 double X=(lo+hi)/2.0;
26                 if(2*lam*k[i]*X*X*(X-v[i])+1>0)
27                     lo=X;
28                 else
29                     hi=X;
30             }
31             x[i]=lo;
32             tot+=s[i]*k[i]*(x[i]-v[i])*(x[i]-v[i]);
33         }
34         if(tot>E)
35             r=lam;
36         else
37             l=lam;
38     }
39     double ans=0.0;
40     for(int i=1;i<=n;i++)
41         ans+=s[i]/x[i];
42     printf("%.10lf\n",ans);
43     return 0;
44 }

转载于:https://www.cnblogs.com/TenderRun/p/5559614.html

高等数学(拉格朗日乘子法):NOI 2012 骑行川藏相关推荐

  1. [NOI2012]骑行川藏

    [NOI2012]骑行川藏 思路一:二分导数 http://www.cnblogs.com/RabbitHu/p/9019762.html 考虑"性价比"即花费单位能量缩短的时间. ...

  2. 2876: [Noi2012]骑行川藏

    2876: [Noi2012]骑行川藏 Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 1243  Solved: ...

  3. bzoj 2876: [Noi2012]骑行川藏 拉格朗日数乘

    2876: [Noi2012]骑行川藏 Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 1033  Solved: ...

  4. bzoj 2876: [Noi2012]骑行川藏 拉格朗日乘子法

    题意 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行前设 ...

  5. BZOJ2876 [Noi2012]骑行川藏

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  6. [拉格朗日乘数法 二分] BZOJ 2876 [Noi2012]骑行川藏

    拉格朗日乘数法 ACdreamers [Math & Algorithm] 拉格朗日乘数法 首先那个能量肯定是要花完的,就变成一个限制了,乘上拉格朗日乘子,求偏导,变成了 2λkix2i(xi ...

  7. bzoj2876: [Noi2012]骑行川藏 :拉格朗日乘数法

    题目链接 bzoj2876 题目描述 Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻, ...

  8. bzoj 2876: [Noi2012]骑行川藏 二分+拉格朗日乘数法

    题意 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行前设 ...

  9. bzoj2876 [Noi2012]骑行川藏 [二分+拉格朗日乘数法]

    Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...

最新文章

  1. Google AI 系统 DeepMind无法通过 高中数学
  2. 从HTML页面重定向
  3. 【大牛疯狂教学】java程序员大专找不到工作
  4. SqlDataAdapter上调用存储过程
  5. oracle的scn增量备份,【Oracle】基于SCN的增量备份修复DataGuard GAP
  6. Apache Camel 2.18 –即将推出的功能的亮点
  7. 线性表、顺序表和链表,你还分不清?
  8. vue element form 表单
  9. Django基础之wsgi
  10. 怎么把echarts中折线里面的其中两点连接成一条线_新手怎么写好一个策划案?三个小捣蛋,一个策划案!...
  11. Spring Cloud Alibaba Sentinel之入门篇
  12. 苹果手机投影到墙上_隔空触控的投影仪,仅有巴掌大小
  13. grafana-reporter
  14. 怎么在电脑中更新statsmodels.stats. diagnostic
  15. 做BI财务数据分析,国产BI软件经验更足
  16. GAMES101复习:光栅化
  17. VScode 配置豆沙绿背景色(source insight同款背景色)
  18. 视频编码标准汇总及比较
  19. association内属性及作用
  20. zedboard教程

热门文章

  1. 计算机名与netbios名
  2. Chapter3.1.1 python函数小示例
  3. python分析股票主力_python如何获取股票数据,python股票分析系统
  4. OA系统的一些学习心得(更新中)
  5. voxelmorph中的STN网络
  6. 家谱世表怎么写?4个要点不注意,会让人贻笑大方的
  7. Chap.15 总结《CL: An Introduction》 (Vyvyan Evans)
  8. 柯尼卡美能达复合机进入维修模式的方法大全
  9. trickle ICE文档翻译 [draft-rescorla-mmusic-ice-trickle-01.txt]
  10. 对百万级txt文件的数据,进行查重处理