码迷,mamicode.com
首页 > 其他好文 > 详细

SGU 114

时间:2014-07-31 15:57:46      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:blog   io   for   div   amp   size   log   return   

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

理由:对于上述位置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,布布扣,bubuko.com

SGU 114

标签:blog   io   for   div   amp   size   log   return   

原文地址:http://www.cnblogs.com/lostwinder/p/3880563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!