提出 #54838113


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;


using ll = long long;

int N, K;
string S;
const ll mod = 998244353;

map<int, map<string, ll>> dp;
bool isPal(string& t) {
  int L = 0, R = t.length() - 1;
  while(L < R) {
    if(t[L] != t[R]) return 0;
    L++;
    R--;
  }
  return 1;
}
ll f(int i, string t) {
  if(i >= N) {
    if(isPal(t)) return 0;
    return 1;
  }

  if(dp.find(i) != dp.end() && dp[i].find(t) != dp[i].end()) {
    return dp[i][t];
  }

  if(i >= K && isPal(t)) {
    return dp[i][t] = 0;
  }


  ll ans = 0;
  if(S[i] == '?') {
    S[i] = 'A';
    ans = (ans + f(i + 1, S.substr(max(0, i - K + 1), min(i + 1, K)))) % mod;
    S[i] = 'B';
    ans = (ans + f(i + 1, S.substr(max(0, i - K + 1), min(i + 1, K)))) % mod;
    S[i] = '?';
  } else {
    ans = (ans + f(i + 1, S.substr(max(0, i - K + 1), min(i + 1, K)))) % mod;
  }
  return dp[i][t] = ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> K;
  cin >> S;
  string t = "";
  cout << f(0, t) << endl;
  return 0;
}

提出情報

提出日時
問題 D - Avoid K Palindrome
ユーザ prathik8794
言語 C++ 20 (gcc 12.2)
得点 450
コード長 1079 Byte
結果 AC
実行時間 508 ms
メモリ 83156 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 4
AC × 76
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt, 01_random_69.txt, 01_random_70.txt, 01_random_71.txt, 01_random_72.txt, 01_random_73.txt, 01_random_74.txt, 01_random_75.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3484 KiB
00_sample_01.txt AC 3 ms 3852 KiB
00_sample_02.txt AC 1 ms 3428 KiB
00_sample_03.txt AC 1 ms 3472 KiB
01_random_04.txt AC 504 ms 83104 KiB
01_random_05.txt AC 247 ms 43496 KiB
01_random_06.txt AC 508 ms 83104 KiB
01_random_07.txt AC 504 ms 83016 KiB
01_random_08.txt AC 8 ms 5068 KiB
01_random_09.txt AC 247 ms 43556 KiB
01_random_10.txt AC 1 ms 3632 KiB
01_random_11.txt AC 1 ms 3516 KiB
01_random_12.txt AC 1 ms 3380 KiB
01_random_13.txt AC 22 ms 8092 KiB
01_random_14.txt AC 1 ms 3448 KiB
01_random_15.txt AC 90 ms 19356 KiB
01_random_16.txt AC 14 ms 6260 KiB
01_random_17.txt AC 501 ms 82628 KiB
01_random_18.txt AC 1 ms 3568 KiB
01_random_19.txt AC 1 ms 3516 KiB
01_random_20.txt AC 1 ms 3476 KiB
01_random_21.txt AC 1 ms 3368 KiB
01_random_22.txt AC 1 ms 3636 KiB
01_random_23.txt AC 2 ms 3564 KiB
01_random_24.txt AC 3 ms 4336 KiB
01_random_25.txt AC 502 ms 82292 KiB
01_random_26.txt AC 1 ms 3448 KiB
01_random_27.txt AC 1 ms 3372 KiB
01_random_28.txt AC 1 ms 3516 KiB
01_random_29.txt AC 12 ms 6000 KiB
01_random_30.txt AC 1 ms 3408 KiB
01_random_31.txt AC 97 ms 20732 KiB
01_random_32.txt AC 30 ms 8720 KiB
01_random_33.txt AC 507 ms 83016 KiB
01_random_34.txt AC 1 ms 3640 KiB
01_random_35.txt AC 1 ms 3456 KiB
01_random_36.txt AC 1 ms 3644 KiB
01_random_37.txt AC 5 ms 4212 KiB
01_random_38.txt AC 65 ms 15824 KiB
01_random_39.txt AC 68 ms 16360 KiB
01_random_40.txt AC 59 ms 13648 KiB
01_random_41.txt AC 502 ms 83076 KiB
01_random_42.txt AC 1 ms 3444 KiB
01_random_43.txt AC 1 ms 3644 KiB
01_random_44.txt AC 1 ms 3488 KiB
01_random_45.txt AC 1 ms 3392 KiB
01_random_46.txt AC 2 ms 3628 KiB
01_random_47.txt AC 13 ms 6408 KiB
01_random_48.txt AC 121 ms 23448 KiB
01_random_49.txt AC 246 ms 43504 KiB
01_random_50.txt AC 1 ms 3372 KiB
01_random_51.txt AC 1 ms 3432 KiB
01_random_52.txt AC 1 ms 3452 KiB
01_random_53.txt AC 1 ms 3440 KiB
01_random_54.txt AC 1 ms 3512 KiB
01_random_55.txt AC 24 ms 8700 KiB
01_random_56.txt AC 7 ms 5076 KiB
01_random_57.txt AC 504 ms 83156 KiB
01_random_58.txt AC 1 ms 3436 KiB
01_random_59.txt AC 1 ms 3404 KiB
01_random_60.txt AC 1 ms 3408 KiB
01_random_61.txt AC 1 ms 3460 KiB
01_random_62.txt AC 1 ms 3512 KiB
01_random_63.txt AC 13 ms 6604 KiB
01_random_64.txt AC 504 ms 82992 KiB
01_random_65.txt AC 248 ms 43476 KiB
01_random_66.txt AC 1 ms 3412 KiB
01_random_67.txt AC 1 ms 3584 KiB
01_random_68.txt AC 1 ms 3436 KiB
01_random_69.txt AC 1 ms 3516 KiB
01_random_70.txt AC 1 ms 3524 KiB
01_random_71.txt AC 2 ms 3528 KiB
01_random_72.txt AC 247 ms 43316 KiB
01_random_73.txt AC 244 ms 43032 KiB
01_random_74.txt AC 1 ms 3480 KiB
01_random_75.txt AC 503 ms 83020 KiB