acoj-1735 输油管道 【中位数】
题目链接:http://acdream.info/problem?pid=1735
输油管道
Problem Description
平面上有n个油井,现在要建立一条主干线,用来把所有的油井产出的原油都输送出去,主干线是平行于x轴的一条直线,每个油井通过一条支线把原油输送到主干线上,现在给定n个油井在平面上的坐标,那么应该把主干线建在什么地方才能让所有的支干线的总长度最小呢?

Input
Output
Sample Input
2
0 0
10 10
Sample Output
10 解题思路:取y值中位数,总干线建到中位数那口井上,总支干线长度和最小。这道题目求中位数,不需要排序,可以利用快排原理进行部分搜取就可以求出中位数了。
代码:
#include <fstream>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib> using namespace std; const int nn=;
int a[nn],n,n2,ans;
long long cnt; int quick_partition(int i,int j);
void quick_sort(int s,int t); int main(){
//freopen("D:\\input.in","r",stdin);
//freopen("D:\\output.out","w",stdout);
while(~scanf("%d",&n)){
n2=(n+)>>;
for(int i=;i<=n;i++) scanf("%*d%d",&a[i]);
quick_sort(,n);
cnt=;
for(int i=;i<=n;i++) cnt+=(long long)abs(a[i]-ans);
printf("%lld\n",cnt);
}
return ;
}
int quick_partition(int i,int j){
a[]=a[i];
while(i<j){
while(i<j&&a[j]>=a[]) j--;
if(i<j) a[i]=a[j],i++;
while(i<j&&a[i]<=a[]) i++;
if(i<j) a[j]=a[i],j--;
}
a[i]=a[];
return i;
}
void quick_sort(int s,int t){
if(s<t){
int tmp=quick_partition(s,t);
if(tmp==n2){
ans=a[tmp];
}else if(tmp<n2){
quick_sort(tmp+,t);
}else{
quick_sort(s,tmp-);
}
}else if(s==t)
ans=a[s];
}
acoj-1735 输油管道 【中位数】的更多相关文章
- acdream 1735 输油管道 贪心
输油管道 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1735 Description ...
- ACdream 1735 输油管道
输油管道 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 262144/131072KB (Java/Others) Problem Des ...
- ACdream 1735 输油管道 (排序)
http://acdream.info/problem?pid=1735 官方题解:http://acdream.info/topic?tid=4246 因为主干线是平行于x轴的直线,那么跟x坐标其实 ...
- ACdream - 1735:输油管道
Time Limit: 2000/1000MS (Java/Others) Memory Limit: 262144/131072KB (Java/Others) Problem Descriptio ...
- P1862输油管道问题
P1862输油管道问题. . . . .-----------------. . . . . .图像大体是这样,是带权平均数问题,设答案是k,sigama(abs(yi-k*wi))最小,这里的wi是 ...
- 洛谷——P1862 输油管道问题
P1862 输油管道问题 题目背景 听说最近石油危机 所以想到了这题 题目描述 某石油公司计划建造一条由东向西的主要输油管道.该管道要穿过一个有n口油井的油田.从每口油井都要有一条输油管道沿最短路径( ...
- P1862 输油管道问题
P1862 输油管道问题 题目背景 听说最近石油危机 所以想到了这题 题目描述 某石油公司计划建造一条由东向西的主要输油管道.该管道要穿过一个有n口油井的油田.从每口油井都要有一条输油管道沿最短路径( ...
- 【a202】&&【9208】输油管道问题
Time Limit: 10 second Memory Limit: 2 MB 问题描述 某石油公司计划建造一条由东向西的主输油管道.该管道要穿过一个有n 口油井的油 田.从每口油井都要有一条输油管 ...
- 洛谷 P1862 输油管道问题
题意 题目链接:P1862 输油管道问题 不难看出每个油井的 \(x\) 坐标是没用的,所以问题转化为如下. 代数意义:给出 \(n\) 个数 \(y_1,y_2,\ldots,y_n\),找一个数 ...
随机推荐
- Python基础学习----异常
''' 异常: 程序在运行的时候,Python的解释器遇到一个错误会停止运行. 并且会提供错误的信息,这就是异常 抛出异常: 程序停止执行并且提示错误信息这个动作就是抛出异常(raise Except ...
- PCB 中过孔和通孔焊盘的区别
在PCB设计中,过孔VIA和焊盘PAD都可以实现相似的功能.它们都能插入元件管脚,特别是对于直插DIP)封装的的器件来说,几乎是一样的. 但是!在PCB制造中,它们的处理方法是不一样的. 1.VIA的 ...
- 【转】Javascript中的this
作者: 阮一峰 日期: 2010年4月30日 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ ...
- bag of words
参考文献 Bag-of-words model (BoW model) 最早出现在NLP和IR领域. 该模型忽略掉文本的语法和语序, 用一组无序的单词(words)来表达一段文字或一个文档. 近年来, ...
- BZOJ3212: Pku3468 A Simple Problem with Integers(线段树)
3212: Pku3468 A Simple Problem with Integers Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2530 So ...
- 20155226 2016-2017-2 《Java程序设计》第8周学习总结
20155226 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志 java.util.logging包提供了日志功能相关类与接口,使用日志的 ...
- (经典)直接插入排序based on 二分查找
#include<stdio.h> // 查找第一个大于key的元素,成功则返回该元素的下标,否则返回数组末元素的下一位 int findFirstLarger(int A[],int n ...
- 阻塞和非阻塞I/O
阻塞和非阻塞I/O是设备访问的两种不同模式,驱动程序可以灵活的支持用户空间对设备的这两种访问形式. 阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后在进行操 ...
- Web开发需要常见的问题
1.sendRedirec()方法执行后,是会直接跳转到目标页面还是执行完其后的语句再跳转到目标页面??? 该方法在执行完其后面的语句才会跳转到目标页面,比如: public void doGet(H ...
- Guid.NewGuid().ToString()生成唯一码js
Guid.NewGuid().ToString() 生成唯一码,用户生成随机id 生成唯一编码,版本控制对比等. //表示全局唯一标识符 (GUID). function Guid(g) { var ...