hdu多校題解

2022-05-05 11:57:08 字數 812 閱讀 9073

給定 \(n\) ,求

\[\sum\limits_ \sum_^ \mu (d) \frac \sum_^} \frac\)

再令 \(h_n = \sum_^ \frac\) ,則有 \(g_n = \frac \sum_ \mu (d) \frac h(\frac)\)

推導 \(f\) 和 \(g\) 的關係:

\[f_n = f_ + \sum\limits_\frac - \sum\limits_ + g_n - g_

\]\[f_n = ... = f_2 + g_n - g_2 = \frac + g_n

\]給定乙個長度為 \(n\) 的序列 \(a\) ,你需要翻轉一段區間 \([l,r]\) 來最大化序列的最長不下降子串行。

求出最長不下降子串行長度以及翻轉的區間。

資料範圍: \(1\le n\le 10^5, 0\le a_i\le 9\)

solution

列舉 \([x,y]\) 表示翻轉區間內產生貢獻的數的值域範圍,設 \(b = \\) ,然後跑 \(a\) 和 \(b\) 的 \(lcs\) 即可,這裡的 \(b\) 的數可多次被覆蓋。

定義 \(dp[i][j]\) 表示 \(a\) 到 \(i\) , \(b\) 到 \(j\) 的 \(lcs\) ,顯然有

\[dp[i][j] = max(dp[i - 1][j] + (a[i] == b[j]), dp[i][j - 1])

\]列舉的過程中順帶維護 翻轉區間的兩端點 即可。

時間複雜度: \(o(45*12*n)\) ,跑不滿。

HDU 5818 多校 7 模擬

題意 對棧的操作,有兩個棧 a b然後接下來n組操作包括入棧,出棧,合併棧。合併棧按入棧的時間順序進行排序。官方題解 比較簡單巧妙的乙個做法是引入乙個新的棧 c 每次合併的時候就把a和 b 合併到 c上,然後把 a 和 b都清空.pu sh還是按正常做,po p 注意當遇到要pop的棧為空時,因為題...

2016多校集訓 hdu5852

題目是乙個棋盤,給你k個棋子和k個目的地,每乙個棋子都是在1行,每乙個目的地都是在n行,要求找出讓k個棋子移動到k個目的地的路徑不交叉的方案數。這個其實也是個套路題目,知道乙個定理。就可以,但是我不知道定理的名字。但是考慮2個棋子的情況 a1 a2 b1 b2 其中使用a b表示 a到b的方案數 那...

hdu多校第三場

題意是將給出的數相加計算出 其中p 的倍數的最大個數。由題意可得,在任意兩個數相加時,其模值必在0 p 1之間,將兩數相加的模值替換掉之前的兩個數字,得到長度減一的效果,用0和1 標記對應模值是否出現,從而代表被處理過的但還沒有達到 p 的倍數的值,直到某次得到的模值為 0 時,再清空之前的標記 代...