• 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 ",mid); for(int i=0;i<n;i++) { sum=sum+abs(mid-data[i]); printf("abs:%d ",abs(mid-data[i])); } printf("%f",sum); } }
  • 相关阅读:
    Oracle——oem开启managementserver的时候搜索不到节点的解决方法!!!
    PL/SQL学习笔记(一)
    oracle 数据库的非指令备份方法
    OracleDBConsole[SID]服务简介
    Toad 使用快速入门
    oracle 配置
    sql中exist与in 的区别
    页面之间传递参数的几种方法荟萃
    div+CSS网页布局入门系列教程(来自标准之路)
    XML操作类
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/6803818.html
Copyright © 2020-2023  润新知