2016年8月16日 星期二

Codeforces Round #365 (Div. 2)

http://codeforces.com/contest/703

題目:
pA : http://codeforces.com/contest/703/problem/A
pB : http://codeforces.com/contest/703/problem/B
pC : http://codeforces.com/contest/703/problem/C
pD : http://codeforces.com/contest/703/problem/D
pE : http://codeforces.com/contest/703/problem/E

My solutions :
pA : http://codeforces.com/contest/703/submission/19618133
pB : http://codeforces.com/contest/703/submission/19622667
pD : http://codeforces.com/contest/703/submission/19768229

題解:

pA :
題目大意:判斷比賽的輸贏!

認真判斷即可!

pB :
題目大意:有n個城市(3<=n<=10^5),每個城市都有各自的ci值(1<=ci<=10000)。如果兩個城市i,j中間有連接,那連接的weight就是ci * cj。一開始,會形成一個環:城市 1 連接 城市 2 , 城市 2 連接 城市 3 , ...... 城市 n 連接 城市 1。 而這其中,會有k個首都(1<=k<=n),首都城市會與所有其他城市相連。問你說:整張圖的權重和。

先開一個sum值:記錄所有城市的ci和。接下來,對於每個首都j,ans += cj * (sum - cj),接下來再把環補起來。最後,我們要想辦法處理首都相乘的問題:可以利用數學公式(a1 + a2 + ..... + an) ^ 2 = (a1^2 + a2^2 + ..... + an^2) + 2 * (兩兩相乘) 解決。

pD :
題目大意:給你一個長度n(1<=n<=10^6)的序列,你只需要支援區間查詢[l,r]:區間中,出現偶數個數的數字的XOR和。

先把查詢按照右界排序。然後需要維護一個東西:前綴XOR和。之後答案就是 前綴XOR和 ^ (區間distinct的數字XOR和)。至於如何維護後面的東西:線段樹啦!







沒有留言:

張貼留言