很想知道wa on 8是为什么,明明本题数据水到几乎所有题解都有hack能叉掉
查看原帖
很想知道wa on 8是为什么,明明本题数据水到几乎所有题解都有hack能叉掉
795355
vegetableYe楼主2023/9/25 16:18

91分 wa on 8求调

void solve() {
    string s;
    cin >> s;
    int m = read(), n = s.size();
    vector<vector<int>> g(n + 22, vector<int>(n + 22));
    for(int i = 0; i < n; i++) {
        for(int j = i; j < min(n, i + 18); j++) {
            string t = s.substr(i, j - i + 1);
            g[i + 1][j + 1] = stol(t);
        }
    }
    vector<vector<int>> dp(n + 2, vector<int>(m + 2, inf));
    // 前 i 个位置,加出 j 的最少次数
    dp[0][0] = -1;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            for(int k = i; k >= max(1LL, i - 18); k--) {
                int now = g[k][i];
                if(j < now) break;
//                 printf("i = %lld, j = %lld, k = %lld, now = %lld\n", i, j, k, now);
                dp[i][j] = min(dp[i][j], dp[k - 1][j - now] + 1);
            }
        }
    }
    int ans = dp[n][m];
    if(ans > inf / 2) ans = -1;
    cout << ans << endl;
}
2023/9/25 16:18
加载中...