解题:NOI 2012 骑行川藏
入手点是每段路程中能量$e$与时间$t$的关系,$t-e$这个函数的导数对于各个路段一样,否则我们可以从导数大的一段路抽出一部分能量分给导数小的,这样会更优
毕姥爷在考场上的做法:猜一猜,然后拿python打打表,发现确实是这样的
那么可以把$e/t$化成关于每段速度$v$的一个式子
$e/t$
$=(ks(v-v')^2)/(s/v)$
针对$v$求导
$=k(v-v')/(1/v^2)$
$=kv^2(v-v')$
然后二分这个导数$d$,尝试反解出$v$
$kv^2(v-v')=d$
$v^2(v-v')=d/k$
$v^3-v^2v'-d/k=0$
不幸的是这个东西一点也不好解,所幸$v$大于零,所以这个函数大概长这样↓

那么这个零点是可以二分出来的,所以再二分一次就好了
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int n; double e,ans,s[N],k[N],v[N];
double V(double der,int idx)
{
double l=,r=1e9;
for(int i=;i<=;i++)
{
double mid=(l+r)/;
if(mid*mid*mid-mid*mid*v[idx]>=der/k[idx]) r=mid;
else l=mid;
}
return r;
}
double Energy(double x)
{
double ret=;
for(int i=;i<=n;i++)
ret+=s[i]*(V(x,i)-v[i])*(V(x,i)-v[i])*k[i];
return ret;
}
int main()
{
scanf("%d%lf",&n,&e);
for(int i=;i<=n;i++)
scanf("%lf%lf%lf",&s[i],&k[i],&v[i]);
double l=,r=1e9;
for(int i=;i<=;i++)
{
double mid=(l+r)/;
(Energy(mid)>e)?r=mid:l=mid;
}
for(int i=;i<=n;i++) ans+=s[i]/V(l,i);
printf("%f",ans);
/* double vv[4]={0,5.12939919,8.03515481,6.17837967};
for(int i=1;i<=n;i++)
{
double t=s[i]/vv[i];
double g=k[i]*(vv[i]-v[i])*(vv[i]-v[i])*s[i];
printf("%lf %lf %lf\n",t,g,vv[i]*vv[i]*(vv[i]-v[i])*k[i]);
}*/
return ;
}
解题:NOI 2012 骑行川藏的更多相关文章
- 高等数学(拉格朗日乘子法):NOI 2012 骑行川藏
[NOI2012] 骑行川藏 输入文件:bicycling.in 输出文件:bicycling.out 评测插件 时间限制:1 s 内存限制:128 MB NOI2012 Day1 Des ...
- bzoj 2876: [Noi2012]骑行川藏 拉格朗日数乘
2876: [Noi2012]骑行川藏 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1033 Solved: ...
- BZOJ 2876 【NOI2012】 骑行川藏
题目链接:骑行川藏 听说这道题需要一些高数知识 于是膜了一发dalao的题解……然后就没了…… 不要吐槽我的精度TAT……eps设太小了就TLE,大了就Wa……我二分的边界是对着数据卡的…… 下面贴代 ...
- 【BZOJ2876】【NOI2012】骑行川藏(数学,二分答案)
[BZOJ2876][NOI2012]骑行川藏(数学,二分答案) 题面 BZOJ 题解 我们有一个很有趣的思路. 首先我们给每条边随意的赋一个初值. 当然了,这个初值不会比这条边的风速小. 那么,我们 ...
- 「NOI2012」骑行川藏
「NOI2012」骑行川藏 题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨. 川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的 ...
- 2876: [Noi2012]骑行川藏 - BZOJ
Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...
- bzoj2876 [Noi2012]骑行川藏
Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...
- bzoj2876 [NOI2012]骑行川藏(拉格朗日乘数法)
题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行 ...
- 【NOI2012】骑行川藏
获得成就:第一次在信竞做神仙数学题 先放个前言,$OI$ 出大型数学题还是比较麻烦的,因为主要是考你数学推导 / 手算式子,你算出来之后把公式套个板子,就得到结论——$OI$ 的大型数学题的代码都是板 ...
随机推荐
- Execute SQL Task 如何返回结果数据集
Execute Sql Task的Result DataSet 主要有以下四种,当Execute Sql Task返回结果之后,需要使用SSIS Variable 来接收数据. 例子中使用的数据表代码 ...
- Android AccessibilityService(辅助服务) 使用示例
1.前言 网上关于Android辅助服务的使用方式已经非常丰富了,所以也不在乎再多我这一篇了:-D.有同学说这是重复造轮子,题主很同意,但反过来说,如果自己没有能力造出轮子,还对重复造轮子嗤之以鼻,那 ...
- JavaScript快速入门-ECMAScript本地对象(RexExp)
一.概述 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 正则表达式是由一个字符序列形成的搜索模式. 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容. 正则表达式 ...
- iOS开发面试题整理
前言 本文借鉴整理了iOS高级开发常见的面试题,并且分博客一一分析,希望能和大家一起进步学习. 欢迎大家关注我的 Github
- ats显示代理缓存
如果要将ats用作显示代理缓存,则必须配置客户端软件(即浏览器)以将请求直接发送到ats. 如果没有将ats配置为使用透明度选项(通过交换机或路由器在路由到源服务器的情况下拦截客户端请求并重新路由到a ...
- C++基础知识(2)
作为接口的函数头 C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口. 在C语言中,省略返回类型相当于说函数的类型为int,然而,C++逐步淘汰了这种用法 也可以使用下面的变体 ...
- A1006. Sign In and Sign Out(25)
25/25,一遍过了,很开心. #include<bits/stdc++.h> using namespace std; struct record{ string id; string ...
- PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)
题意:给定N,以及N个数.找出满足m*n=N且m>=n且m-n最小的m.n值,建立大小为m*n矩阵,将N个数从大到下顺时针填入矩阵中. #include <iostream> #in ...
- js实现随机的四则运算题目
老师给出的题,写一个小程序,可以生成随机的四则运算题目给给小学生用.以前自己就写了一个四则运算的简单js小程序,是这样的: 事件 + - * / 这是个自己输入的算法,但要求是自动产生随机数.于是我用 ...
- Alpha版总结会议——班级派
一.开会的过程 在周一下午上课的最后20分钟内,我们组进行了“班级派”的alpha版的总结会议.首先进行的是分析目前的版本情况,每个人说了自己的进度,包括已经完成的以及即将要完成的.随后是分析前段时间 ...