zoukankan      html  css  js  c++  java
  • HDU 2083 简易版之最短距离

    今天太无聊了,居然刷水题,不过觉得这道题挺有意义的,虽然还是很水 0 0

    题意: 略(中文)

    思路:

      枚举每个点到其他所有点的距离和,取最小值。

      先排序。然后求第一个点到其他点的距离和。然后向右移动,此时左边的点远离,右边的点靠近,可以O(1)的求出下一个点到其他点的距离。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 
     5 using namespace std;
     6 
     7 int a[1000];
     8 
     9 int main() {
    10     int T;
    11     scanf("%d", &T);
    12     while (T--) {
    13         int n;
    14         scanf("%d", &n);
    15         for (int i = 0; i < n; i++)
    16             scanf("%d", &a[i]);
    17         sort(a, a+n);
    18         int now = 0;
    19         for (int i = 1; i < n; i++)
    20             now += a[i]-a[0];
    21         int ans = now;
    22         for (int i = 1; i < n; i++) {
    23             now += (i-n+i)*(a[i]-a[i-1]);
    24             ans = min(ans, now);
    25         }
    26         printf("%d
    ", ans);
    27     }
    28 
    29     return 0;
    30 }
  • 相关阅读:
    HDFS与YARN HA部署配置文件
    Zookeeper学习(一)
    Kafka学习(一)
    Azkaban(3.x)编译安装使用
    回归问题及应用
    K好数
    最大最小公倍数
    区间K大数查询
    幂方分解
    瓷砖铺放
  • 原文地址:https://www.cnblogs.com/Phantom01/p/3644299.html
Copyright © 2011-2022 走看看