1. 程式人生 > 實用技巧 >【題解】「P6832」[Cnoi2020]子弦

【題解】「P6832」[Cnoi2020]子弦

【題解】「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;
}