输油管道问题

简介: 输油管道问题

某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 证明可在线性时间内确定主管道的最优位置。


给定n口油井的位置, 计算各油井到主管道之间的输油管道最小长度总和。


输入格式:

输入的第1 行是油井数n,1<=n<=10000。接下来n 行是

油井的位置,每行2个用空格割开的整数 x和 y,-10000<=x,y<=10000。


输出格式:

输出油井到主管道之间的输油管道最小长度总和。


输入样例:

1. 5
2. 1 2
3. 2 2
4. 1 3
5. 3 -2
6. 3 3


输出样例:

6


思路:首先我们从题目可以分析得出横坐标任意位置都有管道,所以我们只需要分析纵坐标就行了

情况1:两个油井,在两个纵坐标中间位置最佳

情况2:三个油井的情况y1、y2、y3,即到三点的距离最近

情况n:n个y坐标的中位数

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 10010;
int n;
int x, b[N], sum;
int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++ )
        cin >> x >> b[i];
    sort(b, b + n);
    int mid = b[n / 2];
    for (int i = 0; i < n; i ++ )
        sum += abs(mid - b[i]);
    cout << sum;
    return 0;
}


目录
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
五分钟带你了解ChatGPT的基本原理
五分钟带你了解ChatGPT的基本原理
945 0
五分钟带你了解ChatGPT的基本原理
|
编解码 网络协议 网络虚拟化
|
机器学习/深度学习 自然语言处理 计算机视觉
极品Trick | 在ResNet与Transformer均适用的Skip Connection解读
极品Trick | 在ResNet与Transformer均适用的Skip Connection解读
184 0
【分治法】输油管道问题
【分治法】输油管道问题
336 0
【分治法】输油管道问题
|
JavaScript 前端开发 存储
ThreadLocal生成多线程WebClient
package test; //www.cnblogs.com/chenying99/articles/3213544.html import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; impo
3371 0
|
开发者
阿里云开发者社区知识产权保护暨版权授权与侵权投诉指引
阿里云开发者社区知识产权保护暨版权授权与侵权投诉指引
1099068 5
|
C++ 安全 数据安全/隐私保护
|
算法
五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
分治算法一、基本概念    在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
3815 0
|
机器学习/深度学习 Shell

热门文章

最新文章