2017 ccpc 秦皇島站 B題 Expected Waiting Time (zoj3982)


題目鏈接:

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3982

我們要求的就是x * y-1 % P

y = catalan( n ) % P

主要說說x怎么求:

對於一個長度為2n的序列,如果我們在這2n個數前面選擇n個放+,n個放-,並且+-號的放置方式滿足卡特蘭序列,即滿足所有前綴的+號個數 >= -號個數,我們記放置符號后的2n個數的和為S。

這x = catalan(n)種放置方式的S的和。

我們可以轉化為對2n個位置求貢獻。

對於第i個位置a[i],前面為+的方案數為f(i),則前面為-的方案數為catalan(n) - f(i),

對x的貢獻:f(i) * a[i] - (catalan(n) - f(i)) * a[i]

問題是f(i)不會求,到stackoverflow上面也沒有查到。

那就把+-號改為()括號,每次算的是2個位置組成一對的貢獻a[r] - a[l]。

枚舉長度len,再枚舉(括號位置l,則r = l + len - 1,然后推推x的公式,

發現不用枚舉l了,因為變成了前綴和。

所以x的公式就是枚舉長度O(n)的復雜度了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM