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

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的时间消耗会更大,因为相对第一种代码还是做了很多无用计算

posted @   RioTian  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
点击右上角即可分享
微信分享提示