HDU 4355

只能说感觉是三分吧,因为两端值肯定是最大的,而中间肯定存在一点使之最小,呃,,,,猜 的。。。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define LL __int64
using namespace std;
const int N=50050;

double point[N];
double weight[N];
int n;

double cal(double x){
	double ans=0,t;
	for(int i=1;i<=n;i++){
		t=fabs(x-point[i]);
		ans+=(t*t*t*weight[i]);
	}
	return ans;
}

int main(){
	int T,t=0;
	scanf("%d",&T);
	while(++t<=T){
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		scanf("%lf%lf",&point[i],&weight[i]);
		double l=point[1],r=point[n],m,mm;
		while(l+(1e-8)<=r){
			m=l+(r-l)/3;
			mm=r-(r-l)/3;
			if(cal(m)>cal(mm))
			l=m;
			else r=mm;
		}
		double ans=cal(l);
		printf("Case #%d: %.0lf\n",t,ans);
	}
	return 0;
}

  

时间: 2024-11-06 09:42:54

HDU 4355的相关文章

codeforces 782B The Meeting Place Cannot Be Changed+hdu 4355+hdu 2438 (三分)

B. The Meeting Place Cannot Be Changed The main road in Bytecity is a straight line from south to north. Conveniently, there are coordinates measured in meters from the southernmost building in north direction. At some points on the road there are n

HDU 4355 Party All the Time(三分法搜索)

HDU 4355 思路:三分法求f(x)极值. f(x)是指位置为x时的愤怒值之和,是一个三次函数,且存在极值点使f(x)最小. code: /* * @author Novicer * language : C++/C */ #include<iostream> #include<sstream> #include<fstream> #include<vector> #include<list> #include<deque> #i

HDU 4355 Party All the Time 三分

很长时间都是在学习各位大神的力作,并汲取了不少养料,在此一并谢过各位大神了. 当然了,好东西是要跟大家一起分享的,最近发现了几个非常不错的个人站点,都是介绍IOS开发的,其中有唐巧.破船之长.池建强.王维等各位,其中不乏供职于腾讯和阿里这样的IT巨头,希望大家也能从他们的博客中学习到一些技术之外的东西.就不再啰嗦啦,附上地址:http://www.ityran.com/archives/4647 这几天在学习IOS7 CookBook,因为没有找到中文版,就硬着头皮啃原著吧,还真学到了不少东西,

HDU 4355 Party All the Time(三分)

题目链接:HDU 4355 题面: Party All the Time Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5266    Accepted Submission(s): 1625 Problem Description In the Dark forest, there is a Fairy kingdom where

HDU 4355 Party All the Time 三分算法

HDU 4355 Party All the Time 三分算法 题意 给你N个人的位置x和相应重量w,他们要到达同一个位置p,他们每个人的花费的精力等于\(|s[i]-p|^{3}*w\),然后我们需要求一个位置,使得所有人的花费之和最小. 解题思路 根据上面的公式,我们可以知道这个函数不是一个简单的单调函数,最起码是个凹函数(这里需要一个数学上的知识),对于一般情况我们会使用二分法来进行处理,但是这里不是单调函数了,而是一个凹函数,这样我们就不能用二分了,新的算法应运而生--三分算法. 三分

hdu 4355 Party All the Time(三分搜索)

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 hom

HDU 4355 Party All the Time(三分|二分)

题意:n个人,都要去參加活动,每一个人都有所在位置xi和Wi,每一个人没走S km,就会产生S^3*Wi的"不舒适度",求在何位置举办活动才干使全部人的"不舒适度"之和最小,并求最小值. 思路:首先能够得出最后距离之和的表达式最多仅仅有两个极点, 更进一步仅仅有一个极点,否则无最小值. 那么我们就可用三分法或者二分法求解.即对原函数三分或对导数二分就可以.?? #include<cstdio> #include<cstring> #inclu

HDU 4355 数轴上的点找使Si^3*Wi最小的和-浮点数三分

题意:一个数轴上有n个点,现在要找一个点到所有点的距离Si的立方乘以点的权Wi的和最小 分析:三分.浮点数的二分或者三分可以直接用一个数字来限制查找的次数.TLE了几次,把查找次数从10000改到100就过了,本来以为数据范围比较大,100的精度不够. 代码: #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #def

hdu 4355 简单三分找最小值

#include<stdio.h> #include<string.h> #include<iostream> #include<math.h> using namespace std; #define exp 1e-6 int n; double pos[50010],weight[50010]; double min(double a,double b) { return a<b?a:b; } double query(double x) { in

HDU 4355——Party All the Time——————【三分求最小和】

Party All the Time Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4282    Accepted Submission(s): 1355 Problem Description In the Dark forest, there is a Fairy kingdom where all the spirits wil