博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4355 Party All the Time (2012 Multi-University Training Contest 6 ) 三分搜索
阅读量:4638 次
发布时间:2019-06-09

本文共 2656 字,大约阅读时间需要 8 分钟。

Party All the Time

Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 926    Accepted Submission(s): 341

Problem Description
In the Dark forest, there is a Fairy kingdom where all the spirits will go together and Celebrate the harvest every year. But there is one thing you may not know that they hate walking so much that they would prefer to stay at home if they need to walk a long way.According to our observation,a spirit weighing W will increase its unhappyness for S
3*W units if it walks a distance of S kilometers.
Now give you every spirit's weight and location,find the best place to celebrate the harvest which make the sum of unhappyness of every spirit the least.
 

 

Input
The first line of the input is the number T(T<=20), which is the number of cases followed. The first line of each case consists of one integer N(1<=N<=50000), indicating the number of spirits. Then comes N lines in the order that x
[i]<=x
[i+1] for all i(1<=i<N). The i-th line contains two real number : X
i,W
i, representing the location and the weight of the i-th spirit. ( |x
i|<=10
6, 0<w
i<15 )
 

 

Output
For each test case, please output a line which is "Case #X: Y", X means the number of the test case and Y means the minimum sum of unhappyness which is rounded to the nearest integer.
 

 

Sample Input
1 4 0.6 5 3.9 10 5.1 7 8.4 10
 

 

Sample Output
Case #1: 832
 

 

Author
Enterpaise@UESTC_Goldfinger
 

 

Source
 
 
 
因为 s^3 *w     s加了 绝对值 所以 是一个 凸性 函数 可以用 三分做
三分搜索
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #define Min(a,b) a>b?b:a10 #define Max(a,b) a>b?a:b11 #define CL(a,num) memset(a,num,sizeof(a));12 #define inf 999999913 #define maxn 5001014 #define eps 1e-515 #define ll long long16 using namespace std;17 double a[maxn],w[maxn];18 int n;19 double f(double pos)20 {21 int i;22 double ans = 0;23 for( i = 0 ; i < n ; ++i)24 {25 double k = fabs(a[i] - pos);26 27 ans += k*k*k*w[i];28 }29 return ans ;30 }31 double solve(double l,double r)32 {33 34 double mid,midmid;35 while(r - l > eps)36 {37 mid = (l + r)/2.0;38 midmid = (r + mid)/2.0;39 40 41 if(f(mid) <= f(midmid))// f 就算函数值42 r = midmid;43 else l = mid;44 }45 return f(l);46 }47 int main()48 {49 int t,i;50 scanf("%d",&t);51 int cas = 0;52 while(t--)53 {54 scanf("%d",&n);55 for(i = 0 ;i < n;++i )56 {57 scanf("%lf %lf",&a[i],&w[i]);58 }59 double ans = solve(a[0],a[n - 1]);60 printf("Case #%d: %.0lf\n",++cas,ans);61 }62 }

 

转载于:https://www.cnblogs.com/acSzz/archive/2012/08/10/2631509.html

你可能感兴趣的文章
C#判断一个字符串是否是数字或者含有某个数字
查看>>
SVN使用指南
查看>>
【转载】掌 握 3 C ‧ 迎 接 亮 丽 职 涯
查看>>
爬取网站附件
查看>>
java基础图形界面和IO系统
查看>>
javascript学习笔记
查看>>
hdu 3996
查看>>
python第三十九课——面向对象(二)之初始化属性
查看>>
python学习笔记之函数装饰器
查看>>
FEM计算2D瞬态热传导方程
查看>>
四年时光,匆匆而过
查看>>
【php】【psr】psr1 基础编码规范
查看>>
WAF SSI
查看>>
net.sf.json.JSONException: Object is null
查看>>
Java 实现word 中写入文字图片的解决方案
查看>>
码农常用软件
查看>>
(转载-学习)openstack中region、az、host aggregate、cell 概念
查看>>
内存对齐
查看>>
C++对象内存布局,this指针,对象作为参数,作为返回值
查看>>
BCB6 如何跨工程(Project)进行源码级调试
查看>>