1507 陣列的貢獻值

2021-10-21 19:14:11 字數 1474 閱讀 9518

描述

羅少經常刷題,這天他又看到了一道很有意思的題目。

給定乙個長度為 n 的陣列,定義陣列的貢獻值為陣列中 每個數首次出現的位置 * 每個數出現的次數 之和(相同的數字只計算一次)。

例如:1 2 2 3 1,數字 1 首次出現的位置是 1,總共出現了 2 次,所以提供 1 * 2 = 2 的貢獻值,數字 2 是 2 * 2 = 4,數字 3 是 4 * 1 = 4,因此這個陣列的貢獻值為 2 + 4 + 4 = 10。

但很顯然這樣是難不倒羅少的,所以附加了乙個條件,你可以任意改變陣列中數的位置,問改變後陣列最大的貢獻值是多少?

輸入

第一行是乙個正整數 t 代表測試案例的數量。(1 <= t <= 10)

每組案例包含乙個正整數 n ,代表陣列的長度。(1 <= n <= 100000)

然後是 n 個整數 ai。(|ai| <= 10000)

輸出

針對每組案例,輸出改變量字位置後可以得到的最大陣列貢獻值,然後換行。

樣例輸入24

1 2 1 2

41 1 2 2

樣例輸出88

hint

注意:陣列也可以不發生改變。

對於樣例1:1 2 1 2

改變前陣列的貢獻值為 1 * 2 + 2 * 2 = 6

你可以把他改為 1 1 2 2 或者 2 2 1 1 得到更大的陣列的貢獻值 8。

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long

int ll;

intmain()

sort

(a, a + n)

;//系統排序 將輸入的值從小到大排序

int cnt =0;

int number =1;

//記錄數字出現次數

for(

int i =

1; i < n; i++

)else

} freq[cnt]

= number;

//補充最後一組漏掉的資料

sort

(freq, freq + cnt +1)

;//講次數進行排序 預設從小到大

ll sum =0;

int position =1;

for(

int i =

0; i <= cnt; i++

) cout << sum << endl;

}return0;

}

如何評估廣告渠道的真正貢獻值

但實際上使用者可能 搜尋 展示廣告 社交平台等多渠道影響,最終訂單在電子郵件渠道轉化。現在通常的做法是把這張訂單歸功於最後乙個轉化渠道,而忽略渠道交叉影響。由此計算出的各營銷渠道roi偏離過大,分配的各渠道推廣資金是不合理的。很顯然,這種 最後點 擊 計算出來的roi是不正確的 目前最好的手段是記錄...

Hiho1507 可疑的記錄

可疑的記錄 小hi有一棵n個節點的樹,編號1 n,其中1號節點是整棵樹的根。他把這棵樹的n 1條邊記錄成n 1行,每行2個整數a和b,表示a是b的父節點。喜歡惡作劇的小ho在小hi的記錄裡加了一行兩個整數,於是小hi不得設法找出這行可疑的記錄。具體來說,如果去掉某一行之後,餘下n 1行按小hi的規則...

榮格的主要貢獻

榮格在他的理論中拒絕了弗洛伊德以性本能解釋行為的觀點,這一觀點具有積極的意義。固然人的行為受到性驅 榮格的研究 13張 力因素的影響,但這種影響的時間和範圍是極其有限的,超出這個範圍,把性的因素列為影響行為的首要因素,必然失之偏頗。榮格注意到弗洛伊德的錯誤傾向,就使他的理論更接近現實。榮格的許多觀點...