#41160:


xsw20080329@gmail.com (敢不敢讓我過)

學校 : 不指定學校
編號 : 242754
來源 : [163.32.56.83]
最後登入時間 :
2024-10-28 14:31:25
c782. PC. 孤單值量測 -- 2018高雄市高師大附中資訊學科能力 | From: [163.32.56.65] | 發表日期 : 2024-07-08 11:38

依據題意"輸入保證從小到大"所以當 i < j 時 a[i] 必小於 a[j],因此可以假設當第 i 項可以與第 j 項產生孤單值時,第 1~i 項都可以和第 j 項產生孤獨值,因為比 i 小的值與 j 的距離必定比 i 更遠。

所以先找到距離 j 點最近但距離又大於 k 的 i 點,並將所有 i 點紀錄至陣列 v[],如此一來之後要算孤獨單值時就不用再從 0 開始遍歷,直接查表 v[] 就好。

接下來計算孤獨值,因為孤獨值是互相的,所以只算往前的孤獨值避免重複計算。
假如 j = 5、 i = 3,且 j 和 i 可以產生孤獨值,那點 j 的的孤獨值就是

w[1] * w[5] + w[2] * w[5] + w[3] * w[5]

而根據乘法的分配律,可以將上式轉為

(w[1] + w[2] + w[3]) * w[5]

這樣在算孤獨值時只要先將答案加上 w[v[i]] * w[i],再把 w[i]加上 w[i-1],就可以省下迴圈做連續乘法的時間了。

本題輸入測資非常大,輸入優化可以壓掉不少時間。

 
ZeroJudge Forum