1. 程式人生 > >Noip 模擬 4 2018/10/20

Noip 模擬 4 2018/10/20

T1:資料結構(set) 對一個可重集合進行操作,每次可以所有元素+1+1或新增一個元素。輸出集合元素的kk次方和。 根據二項式定理在這裡插入圖片描述 可以發現,(a+1)kak=C(k,1)an1+C(k,2)ak2...C(k,k1)a(a+1)^k-a^k=C(k,1)a^n-1+C(k,2)a^{k-2}...C(k,k-1)a 那麼就只要預處理出所有的a[i]k\sum{a[i]}^{k}然後大力計算即可 時間效率O(nk2)O(nk^2) 注意卡常

T2:博弈(game) 遊戲在一個長為 n 的整數序列 a 上進行,A 和 B 輪流操作,由 A 先手。每次操作是指選擇序列最左 / 最右邊的元素,並刪掉它 遊戲一直進行,直到剩下一個元素 x,我們定義這次遊戲的輸出為 x 。A 想讓輸出儘可能大,B 想讓它儘可能小。 但是,就在他們開始玩遊戲之前,B 突然接到了一個女朋友的電話,此時 A 就有時間對序列動手腳了。具體來說,A 可以在遊戲開始之前先執行恰好 次操作,得到一個對自己更有利的局面(當然,遊戲開始之後仍然是 A 先手)。 現在,問 A 和 B 都按照最優策略玩遊戲,遊戲的輸出值會是多少。 特別地,如果輸入的 k=-1,這表示你需要對 k=0~n-1 都計算答案。

類似於之前的"當那一天來臨(come)" 設mid=(l+r)/2mid=(l+r)/2 通過手玩可以發現,當rl+1r-l+1為奇數時,ans=max(min(s[mid1],s[mid]),min(s[mid],s[mid+1]))ans=max(min(s[mid-1],s[mid]),min(s[mid],s[mid+1]))rl+1r-l+1為偶數時,ans=max(s[mid],s[mid+1])ans=max(s[mid],s[mid+1])
對於任意的k>2,,只要頭尾都進行操作,那麼一定可以從k-2轉移過來,如果只有頭或尾操作了,判斷一下取最大值即可