码迷,mamicode.com
首页 > 其他好文 > 详细

#2083:简易版之最短距离(水题)

时间:2020-04-28 13:19:23      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:its   cout   代码   clu   ace   sync   ++   for   with   

技术图片

AC代码①:

#include <iostream>
using namespace std;
int a[510];
int cmp(const void *a, const void *b)
{
    return *(int *)a - *(int *)b;
}
int main()
{
    ios::sync_with_stdio(false);//解放输入效率
    int t, n, i, sum, temp;
    cin >> t;
    while (t--)
    {
        temp = sum = 0;
        cin >> n;
        for (i = 0; i < n; i++)
            cin >> a[i];
        qsort(a, n, sizeof(int), cmp);
        //先计算n/2点为出发点,然后比较n/2 + 1的sum值
        for (i = 0; i < n; i++)
            sum += abs(a[i] - a[n / 2]);
        if (n % 2 == 0)
        {
            for (i = 0; i < n; i++)
                temp += abs(a[i] - a[n / 2 - 1]);
            sum = sum > temp ? temp : sum;
        }
        cout << sum << endl;
    }
    return 0;
}

AC代码②:DP

#include<bits/stdc++.h>
using namespace std;
int v[510];
int dp[510];
int main() {
    ios::sync_with_stdio(false);
    int t, m;
    cin >> t;
    while (t--) {
        memset(dp, 0, sizeof(dp));
        cin >> m;
        for (int i = 0; i < m; ++i)cin >> v[i];
        for (int i = 0; i < m; i++)
            for (int j = 0; j < m; j++)
                dp[i] += abs(v[j] - v[i]);//一定是绝对值啊
        long long  minn = 99999999999;
        for (int i = 0; i < m; ++i)
            minn = minn < dp[i] ? minn : dp[i];
        cout << minn << endl;
    }
    return 0;
}

Ps:DP的时间消耗会更大,因为相对第一种代码还是做了很多无用计算

#2083:简易版之最短距离(水题)

标签:its   cout   代码   clu   ace   sync   ++   for   with   

原文地址:https://www.cnblogs.com/RioTian/p/12793106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!