SGU 114

分析得,选取的电视塔的位置应当位于各城市的加权中位数位置的右边最近的城市位置。

理由:对于上述位置A,假设它右边城市+它本身的人数为rp,它左边城市的人数为lp,由定义rp>=lp。

所以,如果向左移动D距离,则右边城市不满意度增加D*rp,左边减少D*lp<=D*rp,不合算。

同理,向右移动D距离时,同样有D*rp<=D*lp,不合算。

所以,上述位置为最佳位置。

输出时应注意输出格式:有五位小数。

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
struct city{
	int p,x;
}c[15010];
int cmp(const void *a,const void *b){
	return (*(city *)a).x-(*(city *)b).x;
}
int main(){
	int i,N,sum=0,tmp=0,dist=0;
	scanf("%d",&N);
	for(i=0;i<N;i++){
		scanf("%d%d",&c[i].x,&c[i].p);
		sum+=c[i].p;
	}
	qsort(c,N,sizeof(c[0]),cmp);
	for(i=0;i<N;i++){
		tmp+=c[i].p;
		if(tmp>=sum/2+sum%2){
			printf("%d.00000",c[i].x);
			break;
		}
	}
	return 0;
}

SGU 114

时间: 2024-11-05 23:25:31

SGU 114的相关文章

数学 + 带权中位数 - SGU 114 Telecasting station

Telecasting station Problem's Link Mean: 百慕大的每一座城市都坐落在一维直线上,这个国家的政府决定建造一个新的广播电视台. 经过了许多次试验后,百慕大的科学家们提出了一个结论:在每座城市的不满意度等于这座城市的市民数与这座城市与广播电视台的距离的乘积. 你需要找到这个一维直线上的一点来建造广播电视台,使得所有城市的不满意度的和最小. analyse: 个人觉得应该是加权平均数,然而却是求中位数. 可以这样想:随便挑一个点作为station,左右移动一下看看

SGU[114] Telecasting station

Description 描述 Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came to a conclusion that in any city citizens displeasure is equal to prod

SGU 114. Telecasting station 三分or找中位数

题目链接点这儿 一開始想都没想...直接上了三分...结果...sample的答案不一样...可是过了...然后又看了看. . . 发现这不就是高中或者初中出过的求中位数的题么. . .直接找到这些的中位数即可了....假设某一点处人口不止一个.那就把它拆成一个一个的点. 然后求中位数. 嗯... 这题就结束了. . . 至于三分的过程,事实上就是二分略微改进的版本号.二分仅仅能求单调的函数,假设函数在定义域内不是单调的,那么二分就失效了.当然. ..这时能够用数学上的无穷分逼近,通过分成若干小

中位数及带权中位数题集

codevs 3625 1 #include <bits/stdc++.h> 2 using namespace std; 3 int x[11111], y[11111]; 4 int main() 5 { 6 int n; scanf("%d", &n); 7 for(int i = 1; i <= n; i++) scanf("%d %d", &x[i], &y[i]); 8 ///先处理y 9 sort(y + 1,

SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流

The Glorious Karlutka River =) Time Limit:500MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice SGU 438 Appoint description: Description A group of Mtourists are walking along the Karlutka river. They want to cross

sgu Kalevich Strikes Back

这道题就是求一个大矩形被n个矩形划分成n+1个部分的面积,这些矩形之间不会相交,可能包含.. 1 #include <cstdio> 2 #include <cstring> 3 #include <vector> 4 #include <algorithm> 5 #define maxn 120100 6 using namespace std; 7 8 long long s[maxn]; 9 vector<int>g[maxn]; 10 i

数学计数原理(P&#243;lya,高精度):SGU 294 He&#39;s Circles

He's Circles He wrote n letters "X" and "E" in a circle. He thought that there were 2n possibilities to do it, because each letter may be either "X" or "E". But Qc noticed that some different sequences of letters ca

sgu Ice-cream Tycoon

题意:供应商提供n块价格为c的冰淇淋,一个学生想买n块冰淇淋,手中的钱数总共有t元,为了不让买n块冰淇淋所花费的钱数不超过t元,先尽可能卖给这个学生便宜的冰淇淋. 如果这个学生不能买到所需要的冰淇淋则输出“UNHAPPY”,能则输出“HAPPY”. 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 200000 5 using namespace std; 6 7

sgu 463 - Walking around Berhattan

K - Walking around Berhattan Time Limit:250MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice SGU 463 Description As you probably know, Berhattan is a district of Berland's largest city and it consists of equal squar