为何MLE???
查看原帖
为何MLE???
1339889
pjh0625楼主2024/11/11 13:28
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1e5 + 5;
const int a = 26;

int main() {
    string s;
    cin >> s;
    int n = s.size();
    vector<vector<int>> p(n + 1, vector<int>(a, 0));
    for (int i = 1; i <= n; ++i) {
        for (int c = 0; c < a; ++c) {
            p[i][c] = p[i - 1][c];
        }
        p[i][s[i - 1] - 'a']++;
    }
    vector<vector<int>> dp(n + 1, vector<int>(n + 1, 0));
    for (int i = 1; i <= n; ++i) {
        dp[i][1] = 1; 
        for (int j = 2; j <= i; ++j) {
            dp[i][j] = dp[i - 1][j - 1]; 
            for (int c = 0; c < a; ++c) {
                int count = p[i][c] - p[i - j][c];
                if (count > 0 && count <= j / 2) {
                    dp[i][j] += dp[i - 1][j - 1];
                }
            }
        }
    }
    int r = 0;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= i; ++j) {
            r += dp[i][j];
        }
    }
    cout << r << endl;
    return 0;
}
2024/11/11 13:28
加载中...