描述
羅少經常刷題,這天他又看到了一道很有意思的題目。
給定乙個長度為 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張 力因素的影響,但這種影響的時間和範圍是極其有限的,超出這個範圍,把性的因素列為影響行為的首要因素,必然失之偏頗。榮格注意到弗洛伊德的錯誤傾向,就使他的理論更接近現實。榮格的許多觀點...