• codeforces 863B


    Kayaking

    Vadim is really keen on travelling. Recently he heard about kayaking activity near his town and became very excited about it, so he joined a party of kayakers.

    Now the party is ready to start its journey, but firstly they have to choose kayaks. There are 2·n people in the group (including Vadim), and they have exactly n - 1 tandem kayaks (each of which, obviously, can carry two people) and 2 single kayaks. i-th person's weight is wi, and weight is an important matter in kayaking — if the difference between the weights of two people that sit in the same tandem kayak is too large, then it can crash. And, of course, people want to distribute their seats in kayaks in order to minimize the chances that kayaks will crash.

    Formally, the instability of a single kayak is always 0, and the instability of a tandem kayak is the absolute difference between weights of the people that are in this kayak. Instability of the whole journey is the total instability of all kayaks.

    Help the party to determine minimum possible total instability!

    Input
    The first line contains one number n (2 ≤ n ≤ 50).


    The second line contains 2·n integer numbers w1, w2, ..., w2n, where wi is weight of person i (1 ≤ wi ≤ 1000).


    Output
    Print minimum possible total instability.


    Example
    Input
    2
    1 2 3 4
    Output
    1
    Input
    4
    1 3 4 6 3 4 100 200
    Output
    5

    题意:2*n个人有n-1个双人皮艇,2个单人的,单人的不稳定性是0,双人的不稳定性是两个人体重的差值,如果差值太大就会坠毁。求解最小的不稳定值。

    思路:把所有的情况都算一遍找到最小的值(看到这种方法我也很无奈。。。我也没想到还有这种操作)

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<string.h>
    
    using namespace std;
    long long a[1000];
    long long b[1000];
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            for(int i=1; i<=2*n; i++)
            {
                scanf("%lld",&a[i]);
            }
            int N=2*n;
            long long anss=1000000;
            sort(a+1,a+N+1);
            for(int i=1; i<2*n; i++)
            {
                for(int j=i+1; j<=2*n; j++)
                {
                    long long ans=0;
                    int x=0;
                    for(int k=1; k<=2*n; k++)
                    {
                        if(k!=i&&k!=j)
                        {
                            b[x++]=a[k];
                            if(x%2==0)
                                ans+=(abs(b[x-1]-b[x-2]));
                        }
                    }
                    //cout<<ans<<endl;
                    anss=min(anss,ans);
                }
            }
    
            printf("%lld
    ",anss);
        }
    }
    


     
  • 相关阅读:
    Eclipse使用xdoclet1.2.3 生成hibernate配置文件和映射文件
    Eclipse安装SVN插件
    SourceTree安装和使用
    myeclipse通过数据表生成jpa或hibernate实体
    Delphi 快速读取TXT 指定行的数据
    delphi中如何将一整个文件读入内存
    Delphi TextFile读取文本文件
    Delphi读取和写入utf-8编码格式的文件
    Delphi 判断特定字符是为单字节还是双字节
    delphi按字节长度分割字符串函数(转)
  • 原文地址:https://www.cnblogs.com/da-mei/p/9053328.html
Copyright © 2020-2023  润新知