2022 Google Kick Start Round A
阿新 • • 發佈:2022-03-20
Speed Typing
當且僅當\(P\)是\(I\)的子序列時,可行,然後答案是\(|I| - |P|\)。
Challenge Nine
有一個經典的結論:x是9的倍數 等價於 x的各數位之和為9的倍數。然後有隻能插入1到9,所以插入的數字只有一種可能,記其為\(I\)
然後就是找個最優的位置插入就可以了,即找到第一個大於\(I\)的數\(J\),然後將\(I\)插在\(J\)前面,沒有符合條件的\(J\)就插到末尾。
Palindrome Free Strings
Test Set 1直接暴力列舉都可以。
Test Set 2可以dp做,假設\(dp_{i, j}\)表示:對於長度為\(i\)
為什麼考慮的字尾長度是5呢,因為長度大於7的迴文串必定包含長度為5或者長度為6的迴文子串,維護長度為5的字尾就足以維護再加一位,是否會形成長度為5或者6的迴文串。這樣轉移方程就有了。
特判一下長度小於5的情況;
其餘情況就是初始化一下\(dp_4\),然後DP跑出可達性,看是否可以到達\(dp_{n - 1}\)即可。
Interesting Integers
Test Set 1直接暴力列舉,然後可以藉助預處理字首和優化。
Test Set 2可以數位DP做,但是太久沒寫了一直沒調出來,賽後才調出來。
首先,經典字首和,假設\(f(x)\)
然後,數位和的可能性其實只有108種,可以列舉數位和分別算,然後累加起來就可以了。記\(f(x, S)\)為\(0\)到\(x\)之間,數位和為S的答案。
然後就是數位DP板子題了,多考慮一下前導0而已。