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

  • 相关阅读:
    java unicode转中文
    java常用
    Intellij IDEA常用快捷键——Mac版
    mac 快捷键
    thrift 学习
    ubuntu上的翻译软件,看论文神器
    linux中jupyter notebook中切换虚拟环境
    02_opencv_python_图像处理进阶
    01_opencv_python_基本图像处理
    python刷剑指offer(21-40)(一刷)
  • 原文地址:https://www.cnblogs.com/RioTian/p/12793106.html
Copyright © 2011-2022 走看看