我是題目的傳送門!!
題目描述
給你乙個長度為n的序列,你每次可以將乙個序列分割成兩個連續的的子串行,
分割的代價為原序列的總和。
現在允許你在初始時將序列重新排列一次。
問分割成n個長度為1的序列的最大總代價是多少?
輸入描述:
第一行乙個數n表示原序列的長度;
接下來一行n個數a_i表示原序列的第i個數。
2<=n<=100000
0<=a_i<=10000
輸出描述:
一行乙個整數表示答案。
示例1輸入
43 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輸入
41 1 1 1
輸出
9解題:排序求和
python:
n=
int(
input()
)l=[int
(x)for x in
input()
.split()]
l.sort()a=
len(l)
sum=
0for i in
range(0
,a):
sum+=l[i]
*(i+1)
sum=
sum-l[-1
]print
(sum
)
顯然耗時巨大。
c
#include
intmain()
}}for(
int h=
0;h) sum+
=a[h]
*(h+1)
; sum=sum-a[n-1]
;printf
("%d"
,sum)
;return0;
}
兩層迴圈,耗時巨大
c++
#include
#include
using namespace std;
intmain()
sort
(a,a+n)
;for
(int i=
0;i) cout<
}
利用c++的sort函式,解決了兩層迴圈的尷尬。
over。
cut命令學習
一 定義 正如其名,cut的工作就是 剪 具體的說就是在檔案中負責剪下資料用的。cut是以每一行為乙個處理物件的,這種機制和sed是一樣的。2 剪下依據 cut命令主要是接受三個定位方法 第一,位元組 bytes 用選項 b 第二,字元 characters 用選項 c 第三,域 fields 用選...
cut命令學習
一 定義 正如其名,cut的工作就是 剪 具體的說就是在檔案中負責剪下資料用的。cut是以每一行為乙個處理物件的,這種機制和sed是一樣的。2 剪下依據 cut命令主要是接受三個定位方法 第一,位元組 bytes 用選項 b 第二,字元 characters 用選項 c 第三,域 fields 用選...
cut命令詳解
正如其名,cut的工作就是 剪 具體的說就是在檔案中負責剪下資料用的。cut是以每一行為乙個處理物件的,這種機制和sed是一樣的。剪下依據 cut命令主要是接受三個定位方法 第一,位元組 bytes 用選項 b 第二,字元 characters 用選項 c 第三,域 fields 用選項 f 例 一...