【五校联考3day2】B
Description
小D是雅禮高一著名的神犇,在NOI同步賽中獲得了滿分的優異成績,而全國沒有任何其他人獲得如此的成績。
某天晚上,高一內部在討論一道題目,然而包括小D之內的各種神犇都毫無頭緒,這時候,高二的人贏小T上來給高二進行了精彩的講解。
小D被小T的神犇氣場所折服,他知道小T之所以沒有同步賽滿分是不屑于,于是他決定拜小T為師。
一日小T正在給小D講解后綴數組。
“把一個字符串的所有非空后綴按字典序從小到大排序,然后按順序排列出后綴的第一個字符在原串中的位置所形成的數組,就是后綴數組。如“ababa”的后綴數組就是{5, 3, 1, 4, 2}。”
這里的位置從1開始編號,字符串僅包含小寫英文字母。
接著小T給小D講解了它的構造過程。
小D畢竟身為同步賽滿分,水平還是不低,他立即舉一反三:既然我們能給定一個字符串,給出他的后綴數組,那么給定后綴數組,能不能恢復字符串呢。
小T說:“這是不行的,這個問題我幾年前研究過,譬如說,假設你后綴數組是{2, 1},那么原串既可以是“aa”,也可以是“ bb”。然而,我們的確可以提出一些有趣的問題,我記得我小學的時候,研究過一個問題,給定一個長度為n的數組A,以及一個n × 26 的矩陣w,所有下標都從1開始,其中w_{i, j}表示第i個位置填第j個小寫字母的價值,現在你需要給出一個長度為n的字符串,使得它的后綴數組是A,而且它每個位置的價值和最大。}這個問題可不簡單,我小學的時候研究了整整一節課。”
小D想了想,覺得自己大概就算在小學也只要一節課就想得出來。各位做題人你們會做嗎?
Input
為了減少輸入量,部分數據將在程序內生成。
有一個隨機數產生器,有個內部變量x初始時為x_0,每次產生隨機數時它會將x變為(100000005x + 1532777326) mod 998244353,然后返回x/100取下整。(a mod b 表示a除以 b的余數,該運算的優先級高于加減法。)
輸入一行兩個兩個整數n, x_0。
首先輸入一個1到n的排列,表示數組A,A的定義如題所述。
接著你將按照先i遞增,再j遞增的順序生成w_{i, j}。每次生成一個隨機數r,則w_{i, j} = r mod {10^4}。
Output
為了減少輸出量,你只需要輸出最大的價值和,不需要給出對應的字符串。
輸出一行一個整數表示最大的價值和。
Sample Input
輸入1:
1 493941464
1
輸入2:
2 736594838
1 2
輸入3:
5 910387714
1 2 3 4 5
輸入4:
15 892431401
8 5 9 1 2 7 11 3 14 15 13 10 12 6 4
Sample Output
輸出1:
9490
樣例1解釋:
答案即為權值最大的字母的權值,計算得f的權值為9490最大。前六個字母的權值依次為5602, 7113, 5633, 756, 8496, 9490。
輸出2:
16658
樣例2解釋:
計算得“sw”的權值為16658最大,注意雖然“wf” 的權值是17957,但是它的后綴數組為{2, 1},不滿足條件;“ww”的權值為16935,但由于“w” 的字典序小于“ww” 所以后綴數組也是{2, 1}。
輸出3:
44455
樣例3解釋:
對應的字符串為“hoooq”。
輸出4:
129724
Data Constraint
對于前20%的數據,n ≤ 5。
對于前40%的數據,n ≤ 15。
對于前60%的數據,n ≤ 1000。
對于前100%的數據,n ≤ 100000,0 ≤ x_0 ≤ 998244353。保證存在一個僅含小寫英文字母的字符串,使得它的后綴數組為A。
.
.
.
.
.
分析
設f[i][j]為排名第i的后綴開頭是j字母的最大權值。
f[i][j] 由f[i-1][k] 轉移而來,轉移有兩種情況。
‘a’<=k<j : f[i][j] = max(f[i-1][k] )+w[a[i]][j];
k==j
重點是第二種情況怎么處理。
i-1的排名比i前,他們的開頭又一樣,因此i-1的長度比i短。
rank[i]表示第i個位置開始的后綴的排名,rank[a[i]]=i;
只需要判斷rank[ai + 1]是否大于 rank[a[i-1] +1]
具體意思就是
看ai +1 這個位置的后綴排名,是否大于a[i]+1這個位置的后綴排名
若ai+1這個位置的后綴排名大于a[i-1] +1這個位置的后綴排名,那么當k==j,兩個字符串前面都加上同樣的字符,字典序大小關系不變。
k==j :f[i][j] = max(f[i][j] , f[i-1][j] + w[a[i]][j])(rank[ai + 1]> rank[a[i-1] +1])
時間復雜度:O(n)
注意i枚舉的是a[i]的下標
.
.
.
.
.
.
程序:
轉載于:https://www.cnblogs.com/YYC-0304/p/10458935.html
總結
以上是生活随笔為你收集整理的【五校联考3day2】B的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【五校联考5day1】序列
- 下一篇: 【五校联考6day2】yi