1076: 最短距离

题目描述

在河边有N户人家,他们每天都需要到河边去打水,后来政府拔款给大家修建一个水库。
每户人家到水库的最短距离为沿河方向的距离差,问如何选择水库的位置,使所有人到水库的距离和最短?

输入

第一行输入一个数字Case,表示一共有多少组测试数据。

接下来Case个测试数据块。

每个测试数据块:第一行一个数字N,表示有N户人。

接下来一行有N个数字d,表示每户人家在河流方向上的坐标。

Case<=10,1<=N<=100000,0<=d<=2*10^9。

输出

对于每组测试数据,输出最短的距离和,一行一个结果。

样例输入

2
2
1 3
1
3

样例输出

2
0

提示

来源

#include<stdio.h>

#include<string.h>

sortquickly(int a[],int lenth)

{

    int mid;

    mid = a[0];

    int i,j;

    i=0;

    j=lenth-1;

    if(lenth>1)

    {

        while(i<j)

        {

            for(;j>i;j--)

            {

                if(a[j]<mid)

                {

                    a[i++]=a[j];

                    break;

                }

            }

            for(;i<j;i++)

            {

                if(a[i]>mid)

                {

                    a[j--]=a[i];

                    break;

                }

            }

        }

        a[i]=mid;

        sortquickly(a,i);

        sortquickly(a+i+1,lenth-i-1);

    }

}

main()

{

    int i,a[100001],lenth,N,h,p,o,mid,x,T,j;

    long sum;

    scanf("%d",&T);

    for(j=0;j<T;j++)

    {

    sum=0;

    scanf("%d",&N);

    h=N;

    for(i=0;i<N;i++)

    scanf("%d",&a[i]);

    sortquickly(a,N);

        if(h%2!=0)

    {      

        p=(h-1)/2;

        mid=a[p];

        for(o=0;o<p;o++)

        {

        x=mid-a[o];

        sum=sum+x;

        }

        for(o=p+1;o<h;o++)

        {

        x=a[o]-mid;

        sum=sum+x;

        }

    }

        if(h%2==0)

    {

        p=h/2;

        p=p-1;

        mid=a[p];

        for(o=0;o<p;o++)

        {

        x=mid-a[o];

        sum=sum+x;

        }

        for(o=p+1;o<h;o++)

        {

        x=a[o]-mid;

        sum=sum+x;

        }

    }

        printf("%ld\n",sum);

}

}

第三届“朗讯杯”初级组

时间: 2024-10-25 08:11:12

1076: 最短距离的相关文章

1076. Trash(KM算法 二分最佳完美匹配)

1076. Trash Time limit: 1.0 second Memory limit: 64 MB You were just hired as CEO of the local junkyard.One of your jobs is dealing with the incoming trash and sorting it for recycling.The trash comes every day in N containers and each of these conta

uva 1076 - Password Suspects(AC自动机+记忆化搜索)

题目链接:uva 1076 - Password Suspects 题目大意:有一个长度为n的密码,存在m个子串,问说有多少种字符串满足,如果满足个数不大于42,按照字典序输出. 解题思路:根据子串构建AC自动机,然后记忆化搜索,dp[i][u][s]表示第i个字符,在u节点,匹配s个子串. #include <cstdio> #include <cstring> #include <queue> #include <string> #include <

点到线段的最短距离

#include<bits/stdc++.h> using namespace std; const int M = 1e5+10 ; const double pi = acos(-1.0) ; int n ; double sx , sy ;//源点 double X[M] , Y[M] ; double minn = 1e18 , maxn = -1 ; double dist (int id) { return sqrt((X[id]-sx)*(X[id]-sx)+(Y[id]-sy)

【BZOJ】【1076】【SCOI2008】奖励关

状压DP+数学期望 蒟蒻不会啊……看题跑…… Orz了一下Hzwer,发现自己现在真是太水了,难道不看题解就一道题也不会捉了吗? 题目数据范围不大……100*(2^16)很容易就跑过去了…… DP的时候max一下是接不接当前这第k个宝物……最后除以N(算期望) 1 /************************************************************** 2 Problem: 1076 3 User: Tunix 4 Language: C++ 5 Resul

poj1379+POJ2420+hdu3932(最短距离+费马点+模拟淬火算法)

Run Away Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5632   Accepted: 1729 Description One of the traps we will encounter in the Pyramid is located in the Large Room. A lot of small holes are drilled into the floor. They look complet

51nod 1076 2条不相交的路径 无向图强联通分量 trajan算法

1076 2条不相交的路径 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s]到另一个顶点V[t],是否存在2条不相交的路径.(两条路径不经过相同的边) (注,无向图中不存在重边,也就是说确定起点和终点,他们之间最多只有1条路) Input 第1行:2个数M N,中间用空格分开,M是顶点的数量,N是边的数量.(2 <= M <= 25000, 1 <= N <=

任意两点间最短距离floyd-warshall ---- POJ 2139 Six Degrees of Cowvin Bacon

floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j]); 非常好实现 O(V^3) 这里贴一道刚好用到的题 http://poj.org

求DAG上两点的最短距离

Problem 给出一个不带边权(即边权为1)的有向无环图(unweighted DAG)以及DAG上两点s, t,求s到t的最短距离,如果无法从s走到t,则输出-1. Solution DFS,BFS都可,对于unweighted DAG, BFS更合适,下面给出DFS解法. const int N(1e5+5); vector<int> g[N]; int d[N], vis[N]; void dfs(int u, int t){ vis[u]=1; if(u==t){d[u]=0; re

杭电2083(简易版之最短距离)

简易版之最短距离 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 2   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 寒假的时候,ACBOY要去拜访很多朋友,恰巧他所有朋友的家都