【題解】「P6832」[Cnoi2020]子弦
阿新 • • 發佈:2020-11-03
【題解】「P6832」[Cnoi2020]子弦第一次寫月賽題解(
首先第一眼看到這題,怎麼感覺要用 \(\texttt{SAM}\) 什麼高科技的?結果一仔細讀題,簡單模擬即可。
我們不難想出,出現最多次的子串的長度必然是 \(1\),不管怎樣,長度 \(\geqslant 2\) 的子串的出現次數都必然 \(\leqslant\) 長度為 \(1\) 的子串的出現次數。
這樣我們就可以將題目描述變變:
給定字串 \(\texttt{S}\),求 \(\texttt{S}\) 出現次數最多的字元的出現次數。
那麼就很容易寫出程式碼了:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #include <string> #define line cout << endl using namespace std; const int NR = 1e4 + 5; int cnt[NR], ans = -1; int main () { char c; int n = 0; while (cin >> c) { n = max ((int) c, n); cnt[c]++; } for (int i = 1; i <= n; i++) { ans = max (ans, cnt[i]); } cout << ans << endl; return 0; }