46
Description
某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n 口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置, 即使各油井到主管道之间的输油管道长度总和最小的位置?给定n 口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和。
/* #include<iostream> #include<algorithm> #include<cmath> using namespace std; int a[10000]; int main() { int n,q,p,c; while(cin>>n) { int sum=0; for(int i=0;i<n;i++) { cin>>q>>p; a[i]=p; } sort(a,a+n); c=a[n/2]; for(int i=0;i<n;i++) sum+=abs(c-a[i]); cout<<sum<<endl; } return 0; } */ /* Sample Input 5 1 2 3 5 3 7 3 4 2 7 Sample Output 8 */ #include<iostream> #include<stdio.h> #include<cmath> using namespace std; int main() { int n; while(scanf("%d",&n)==1&&n>=1) { int data[n]; int tempt; for(int i=0;i<n;i++) { scanf("%d %d",&tempt,&data[i]); } for(int i=0;i<n;i++) { int tmp=data[i]; for(int j=5;j>i;j--) { if(tmp>data[j]) { data[i]=data[j]; data[j]=tmp; tmp=data[i]; } } } for(int i=0;i<n;i++) { cout<<data[i]<<endl; } int sum=0; int mid; if(n%2==0) mid=(data[n/2]+data[n/2-1])/2; else mid=data[n/2+1]; printf("mid:%d\n",mid); for(int i=0;i<n;i++) { sum=sum+abs(mid-data[i]); printf("abs:%d\n",abs(mid-data[i])); } printf("%f",sum); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY