zoukankan      html  css  js  c++  java
  • Wannafly挑战赛2

    Cut
    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    给你一个长度为n的序列,你每次可以将一个序列分割成两个连续的的子序列,
    分割的代价为原序列的总和。
    现在允许你在初始时将序列重新排列一次。
    问分割成n个长度为1的序列的最大总代价是多少?

    输入描述:

    第一行一个数n表示原序列的长度;
    接下来一行n个数a_i表示原序列的第i个数。
    2<=n<=100000
    0<=a_i<=10000

    输出描述:

    一行一个整数表示答案。
    示例1

    输入

    4
    3 2 4 1

    输出

    26

    说明

    [3,2,4,1]重排->[1,2,3,4]->[1],[2,3,4]->[1],[2],[3,4]->[1],[2],[3],[4]。
    示例2

    输入

    4
    1 1 1 1

    输出

    9

    允许排序啊,直接排序找到贡献就行的,也就最后一个数很特殊

    #include <bits/stdc++.h>
    using namespace std;
    const int N=100005;
    int a[N];
    int main()
    {
        int n;
        scanf("%d",&n);
        long long ans=0;
        for(int i=1; i<=n; i++)
        scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        for(int i=1; i<n; i++)
           ans+=a[i]*i;
        ans+=a[n]*(n-1);
        printf("%lld",ans);
        return 0;
    }
  • 相关阅读:
    KafkaOffsetMonitor
    锋利的KATANA
    用grunt搭建自动化的web前端开发环境
    网上书店订单功能的实现
    作用域和控制器
    使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC)
    ABP日志管理
    .NET开源项目
    服务总线
    Message解析流程(转)
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7746816.html
Copyright © 2011-2022 走看看