BZOJ 2876 骑行川藏
http://www.lydsy.com/JudgeOnline/problem.php?id=2876
拉格朗日乘数法:f'+入g'=0,f为函数的导数,g为限制条件的导数。
思路:E=Σki*si*(vi-vi')^2,贪心可知,当E=Eu时,才能得到最优解。
我们假设函数f=Σsi/vi,限制g=Σki*si*(vi-vi')^2=E
根据拉格朗日乘数法,f'+入g'=0,
g'=2*ki*si*(vi-vi')
f'=-si/(vi^2)
可得-si/(vi^2)+2*入*ki*si*(vi-vi')=0
即2*入*ki*(vi^2)*(vi-vi')=1
由于入与vi负相关,且vi与E正相关,因此入与E负相关,因此满足单调,二分入的值,判断解是否等于E
2*入*ki*(vi^2)*(vi-vi')-1=0中,(vi^2)*(vi-vi')关于vi单调递增(vi>0),也可以通过二分来找方程的根。
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
const double eps=1e-;
const double inf=1e9;
double ans[],k[],v[],s[],E;
int n;
double calc(int x,double Mid){
double l=std::max(0.0,v[x]),r=inf;
while (r-l>eps){
double mid=(l+r)/;
if (mid*mid**Mid*k[x]*(mid-v[x])->) r=mid;
else l=mid;
}
return l;
}
double sqr(double x){
return x*x;
}
double work(double mid){
for (int i=;i<=n;i++)
ans[i]=calc(i,mid);
double res=;
for (int i=;i<=n;i++)
res+=s[i]*k[i]*(sqr(v[i]-ans[i]));
return res;
}
int main(){
scanf("%d",&n);scanf("%lf",&E);
for (int i=;i<=n;i++){
scanf("%lf%lf%lf",&s[i],&k[i],&v[i]);
}
double l=,r=1e9;
while (r-l>eps){
double mid=(l+r)/;
if (work(mid)>E) l=mid;
else r=mid;
}
double Ans=;
for (int i=;i<=n;i++)
Ans+=s[i]/ans[i];
printf("%.8f\n",Ans);
}
BZOJ 2876 骑行川藏的更多相关文章
- 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 题解 我们有一个很有趣的思路. 首先我们给每条边随意的赋一个初值. 当然了,这个初值不会比这条边的风速小. 那么,我们 ...
- 高等数学(拉格朗日乘子法):NOI 2012 骑行川藏
[NOI2012] 骑行川藏 输入文件:bicycling.in 输出文件:bicycling.out 评测插件 时间限制:1 s 内存限制:128 MB NOI2012 Day1 Des ...
- 「NOI2012」骑行川藏
「NOI2012」骑行川藏 题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨. 川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的 ...
- 2876: [Noi2012]骑行川藏 - BZOJ
Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...
- bzoj2876 [Noi2012]骑行川藏
Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...
- bzoj2876 [NOI2012]骑行川藏(拉格朗日乘数法)
题目描述 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因此在每天的骑行 ...
- 【NOI2012】骑行川藏
获得成就:第一次在信竞做神仙数学题 先放个前言,$OI$ 出大型数学题还是比较麻烦的,因为主要是考你数学推导 / 手算式子,你算出来之后把公式套个板子,就得到结论——$OI$ 的大型数学题的代码都是板 ...
随机推荐
- KEIL C51 Call Tree
KEIL中函数的调用在其帮助文档中有一个详细的解释,引用如下: The Call Tree The best way to demonstrate how the call tree is gener ...
- cmake编译(编译目标)x86或x64
if(CMAKE_CL_64) #CMAKE的内建变量,如果是true,就说明编译器的64位的,自然可以编译64bit的程序 set(ADDRESS_MODEL 64) set(NODE_TAR ...
- Highcharts接收后台传来的json对象值无法显示
在highcharts接收后台传来的json对象网上已经有很多的介绍,在此不多做说明,这里想记录一笔的是在接收的json解析后的value值是String类型的,而highcharts里的data数组 ...
- 诺心(LECAKE) | 氪加
诺心(LECAKE) | 氪加 诺心(LECAKE)
- 关于Tcp三次握手的思考
一.为什么不能使两次握手,两次握手就应该可以保证线路的畅通? 1) 只能建立一个方向的连接,称为半连接 记住TCP是全双工的. A向B发出请求,同时收到B的确认,这时只有A.B知道A到B的连接成功了. ...
- 高仿qq聊天界面
高仿qq聊天界面,给有需要的人,界面效果如下: 真心觉得做界面非常痛苦,给有需要的朋友. chat.xml <?xml version="1.0" encoding=&quo ...
- Windows无需CygWin 使用NDK开发
无需cygwin,使用NDK进行开发 NDK从7开始自带编译器,在windows上无需配置cygwin的环境. 在eclips中配置NDK路径 在eclipse中点击菜单栏window-Perfe ...
- 删除list中指定值的元素
public class ListRemoveAll { public static void main(String[] args) { // TODO Auto-generated method ...
- Java中随机数生成的两种方法,以及math的floor
1.Math的random方法,调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选 ...
- Js 实现 C# Format方法
参考网友的, 挺好用的: String.prototype.format = function (args) { if (arguments.length > 0) { var result = ...