zoukankan      html  css  js  c++  java
  • Codeforces 863B Kayaking 暴力 水题

    传送门:http://codeforces.com/problemset/problem/863/B

    啊啊啊啊啊……做的时候卡了好久啊,想多了,还觉得是dp啥的……其实就是个暴力……

    暴力选两个人乘坐单人船,剩下的排序以后分为两组,记录差的最小值即可。

    #include<iostream>
    #include<string>
    #include<string.h>
    #include<cmath>
    #include<algorithm>
    #include<map>
    using namespace std;
    typedef long long ll;
    int n,sum,ans;
    int a[105],c[105];
    int main()
    {
        while (cin >> n)
        {
            sum = 0;
            for (int i = 0; i < 2 * n; i++)
            {
                cin >> a[i];
                sum += a[i];
            }
            sort(a, a + 2 * n);
            ans = 1e9;
            for (int i = 0; i < 2 * n; i++)
            {
                for (int j = i+1; j < 2 * n; j++)
                {
                    int cur = 0,b=0;
                    sum -= a[i];
                    sum -= a[j];
                    for (int k = 0; k < 2 * n; k++)
                    {
                        if (k != i&&k != j)
                            c[cur++] = a[k];
                    }
                    for (int k = 0; k < 2 * n-2; k+=2)
                        b += c[k];
                    ans = min(ans, abs(sum - b - b));
                    sum += a[i] + a[j];
                }
            }
            cout << ans << endl;
        }
        return 0;
    }
    #include<iostream>
    #include<string>
    #include<string.h>
    #include<cmath>
    #include<algorithm>
    #include<map>
    using namespace std;
    typedef long long ll;
    int n,sum,ans;
    int a[105],c[105];
    int main()
    {
        while (cin >> n)
        {
            sum = 0;
            for (int i = 0; i < 2 * n; i++)
            {
                cin >> a[i];
                sum += a[i];
            }
            sort(a, a + 2 * n);
            ans = 1e9;
            for (int i = 0; i < 2 * n; i++)
            {
                for (int j = i+1; j < 2 * n; j++)
                {
                    int cur = 0,b=0;
                    sum -= a[i];
                    sum -= a[j];
                    for (int k = 0; k < 2 * n; k++)
                    {
                        if (k != i&&k != j)
                            c[cur++] = a[k];
                    }
                    for (int k = 0; k < 2 * n-2; k+=2)
                        b += c[k];
                    ans = min(ans, abs(sum - b - b));
                    sum += a[i] + a[j];
                }
            }
            cout << ans << endl;
        }
        return 0;
    }
  • 相关阅读:
    vue-router的基本使用
    SQL Server加密存储过程的破解
    IIS绑定Active Directory账号自动登录网站的方法
    .Net Install类的Install、Commit等事件触发顺序
    正态分布公式
    HDU4417 Super Mario
    CodeChef
    Gym101630C Connections
    CF916C
    CF912D Fishes
  • 原文地址:https://www.cnblogs.com/Egoist-/p/7597387.html
Copyright © 2011-2022 走看看