• tyvj1294 小v的舞会


    背景

    "梦中伊人,断我男儿几寸柔肠,于断桥,不知西风自憔悴那姑娘。"小v的梦中伊人要带领一大帮姐妹MM们来小v家举办舞会,然而怎么安排跳舞的顺序成了大问题,你能帮他么?

    描述

    有n个MM要站成若干个圈来跳华尔兹,而每个MM都有一个漂亮值Si,跳舞时第i个MM所表现出来的漂亮值为:该MM的漂亮值与其后面MM的漂亮值之差的绝对值(规定顺时针方向为向后),如果某个MM单独站成一个圈(假设能站成),则其漂亮值为0,你的任务是找出这个最大能表现出的漂亮值。

    输入格式

    第一行一个整数n,表示n个MM
    第二行n个整数,第i个整数表示第i个MM的漂亮值

    输出格式

    一行一个整数,表示能表现出的最大漂亮值

    测试样例1

    输入


    12 11 24 17 12 24 

    输出

    60

    备注

    数据范围:
    对于10%的数据,0<n<=10,0<Si<=100
    对于40%的数据,0<n<=50,0< Si <=1000
    对于100%的数据,0<n<=300,0<Si<=1000000
    结果保证不大于2^31.
    //贪心,取两头,怎么证明我不懂
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #define ll long long
    using namespace std;
    ll n,a[10005],b[10005],sum;
    int main(){
        cin>>n;
        for(int i = 1;i <= n;i++) scanf("%lld",&a[i]);
        sort(a+1,a+1+n);
        int l = 1,r = n,opt = 0;
        for(int i = 1;i <= n;i++){
            if(!opt) b[i] = a[l++];
            else b[i] = a[r--];
            opt ^= 1;
        }
        b[0] = b[n];
        for(int i = 1;i <= n;i++){
            if(b[i] > b[i-1]) sum += b[i] - b[i-1];
            else sum += b[i-1] - b[i];
        }
        cout<<sum;
        return 0;
    }
  • 相关阅读:
    qt QTimer 计时器
    qt DateTime 计算时间
    c++ win32 关机 注销 重启
    uniapp 修改meta:viewport
    初次使用 VUX
    移动端web app自适应布局探索与总结
    前端js模版 预编译工具Tmod js使用入门
    谷歌 Uncaught SecurityError: Failed to execute 'replaceState' on 'History 错误
    H5 前端页面适配响应式
    微信video标签全屏无法退出bug 本文系转载
  • 原文地址:https://www.cnblogs.com/hyfer/p/5791423.html
Copyright © 2020-2023  润新知