洛谷 P1862 输油管道问题
一篇关于用C++解《洛谷 P1862 输油管道问题》这道题的题解
卷首语
今天是2022年8月15日,我无聊,就发了这个题解,希望能帮助大家。我个人是一个初中生,准备参加CSP-J,在复习中,发现了这道题,分享给大家。我写的可能不是很好,让大家见笑了。在此我要说明一点,我用的代码是C++语言的。
题目简介
点击下方蓝色字即可查看
《洛谷 P1862 输油管道问题》原题网站
题目背景
听说最近石油危机所以想到了这题
题目描述
某石油公司计划建造一条由东向西的主要输油管道。
该管道要穿过一个有n口油井的油田。
从每口油井都要有一条输油管道沿最短路径(或南或北)与主管道相连。
如果给定n口油井的位置,
及它们的x坐标(东西向)和y坐标(南北向),
应如何确定主管道的最优位置,
即使各油井到主管道之间的输油管道长度总和最小的位置?
证明可规定时间内确定主管道的最优位置。
输入格式
第一行是油井数n(1<=n<=10000)接下来n行是油井的位置,每行2个整数x和y(-10000<=x,y<=10000)
输出格式
只有一行是油井到主管道之间的输油管道最小长度总和
输入样例
5
1 2
2 2
1 3
3 -2
3 3
输出样例
6
题目分析
从题目可以看出,这题根本与横坐标(x轴)没有太大关系,但这并不意味不需要横坐标,因为输入时还是需要横坐标的(在我的代码第37行我有一个小技巧,这样就不需要存储横坐标了)。我们在做之前可以缩小一下数据,比如说我们先只有一个油井——(3, 3)。我们只需要把主管道经过这个油井就可以了。接下来慢慢增加数据,并进行找规律。在这时候,我建议你自己画一张坐标图(建议在电脑上,这样更方便),让你更清晰地理解题目,我这里为了抓紧时间,就不把图发出来了。在找规律的过程中,你就会发现:如果这些油田是按顺序输入的,会是否方便。这就意味着,我们就应该进行排序。具体内容请看代码。
代码
# include <bits/stdc++.h>
# define MAX (10005)using namespace std;/*
文件名:petroleum
题目:洛谷 P1862 输油管道问题
题目网址:https://www.luogu.com.cn/problem/P1862输入:
5
1 2
2 2
1 3
3 -2
3 3
输出:
6
*/bool cmp(int x, int y) {return x < y;
}int main() {// freopen("petroleum.in", "r", stdin);
// freopen("petroleum.out", "w", stdout); int n, i, j,sum,a[MAX]; //a[0..n-1]。第i口油井的纵坐标在a[i]//输入数据 cin >> n;for (i = 0; i <= n - 1; i ++ ) {cin >> a[i]; //横坐标说没有用的,可以直接抛弃掉 cin >> a[i];}//排序 sort(a, a + n, cmp);//两端对称取长短。中位数原理。 for (sum = 0, i = 0, j = n - 1; i <= j; i ++ , j -- ) {sum += a[j] - a[i];}cout << sum << endl;return 0;
}
卷末语
这题的思路非常灵活,所以请各位注意一下几点:
1.认真读题。对照的题目,把相应的数据标在一张坐标图上面
2.缩小数据,从最简单的数据出发去研究。
3.针对自己给出来的初步解决方案,适当地把数据的规模和样本放大一点,从多个角度尝试着修改一下数据,来验证一下自己给出的这个解决方案是否正确,是否能够应对所有的局面。
4.认真编程,确保自己的代码和自己大脑中的解决方案是一致的。
我个人是当天在洛谷上提交的,10个测试点都AC了,所以这个代码也Accepted了。我个人认为这个代码应该没有问题。
如果您在阅读的过程中,发现问题,请在留言区指出不足,我会真心感谢您的指教。在此,谢谢各位观看我的题解!
洛谷 P1862 输油管道问题相关推荐
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
- 洛谷P1417 烹调方案
洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...
- 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )
昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 洛谷专题训练 ——【算法1-1】模拟与高精度
洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...
最新文章
- 更改mvc版本的时候,手动修改交3.0改到4.0,将razor改到2.0,仍然提示出现错误,mvc3.0...
- C/C++变量存储区域
- 文件系统磁盘管理(七)--RAID
- ARC下的所有权修饰符
- vmware workstation 8上面装vsphere5
- leetcode145. 二叉树的后序遍历
- 构建插件式的应用程序框架(一)----开篇
- linux svn 设置propertise
- 自动生成html_服务搭建篇二·Jenkins+Jmeter+Gitlab持续集成实现接口流程自动化
- 反编译获取微信小程序源码
- phpStudy启动失败时的解决方法 提示缺vc9运行库
- 【手撕算法】PatchMatch图像修复算法C++实现
- BCM业务连续性管理
- 【Python】完美采集淘宝数据(附完整源代码和视频教程)
- 朋友圈gys是什么意思,女生微信朋友圈说说经典句子
- 软件测试丨工具在接口测试中发挥什么样的作用?
- 【Mybatis从入门到实战教程】第一章 Mybatis 入门
- php laravel 教程,Laravel框架学习之新手教程
- 网线的制作方法及步骤
- 博德之门 linux x32,GOG.com
热门文章
- 控油,真的可以缓解脂溢性脱发么?
- html5中心开班信息,思途2103UIHTML5开班——新开始,新收获
- 10.数据库-Matplotlib
- Ajax跨域请求时出现Access to XMLHttpRequest at ‘xxx‘ from origin ‘xxx‘ has been been blocked by CORS policy
- et文件转Word的操作方法
- css3 实现圆角的三角形
- Problem F: 尖兵
- 数据结构的六大排序算法详解
- idea看java版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...
- Power BI—导出数据