Submission #69714922


Source Code Expand

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

constexpr int mod = 998244353;

/////////////////// メイン ///////////////////

int main () {
  
  //////////////////// 入力 ////////////////////

  int n;
  string t;
  cin >> n >> t;

  //////////////// 出力変数定義 ////////////////

  int result = 0;

  //////////////////// 処理 ////////////////////

  // DPテーブル
  // bitが立っている位置の文字だけ拾ったやつが、何パターンで作れるか
  vector<int> dp(1<<n,0);

  // 空文字列は1としておく
  dp.at(0) = 1;

  // 空以外の文字列を埋めていく
  for (int i=1; i<(1<<n); i++) {

    // 1つ前で抜いた文字
    char c = '*';

    // ビットが立っているところを順に見る
    for (int j=0; j<n; j++) {

      // ビットが立っているところで、直前と文字被りでなかったら、そのパターン数を足してcを更新
      if (i&(1<<j)&&t.at(j)!=c) {
        dp.at(i) += dp.at(i-(i&(1<<j)));
        dp.at(i) %= mod;
        c = t.at(j);
      }
    }

  }

  // テーブルの最後が答え
  result = dp.back();

  //////////////////// 出力 ////////////////////

  cout << result << endl;

  //////////////////// 終了 ////////////////////

  return 0;

}

Submission Info

Submission Time
Task F - Inserting Process
User wightou
Language C++ 23 (gcc 12.2)
Score 500
Code Size 1326 Byte
Status AC
Exec Time 356 ms
Memory 19624 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 3
AC × 29
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3476 KiB
00_sample_01.txt AC 1 ms 3456 KiB
00_sample_02.txt AC 322 ms 19472 KiB
01_test_00.txt AC 1 ms 3556 KiB
01_test_01.txt AC 1 ms 3444 KiB
01_test_02.txt AC 170 ms 11296 KiB
01_test_03.txt AC 1 ms 3424 KiB
01_test_04.txt AC 1 ms 3648 KiB
01_test_05.txt AC 302 ms 19484 KiB
01_test_06.txt AC 355 ms 19536 KiB
01_test_07.txt AC 352 ms 19464 KiB
01_test_08.txt AC 341 ms 19524 KiB
01_test_09.txt AC 338 ms 19464 KiB
01_test_10.txt AC 327 ms 19520 KiB
01_test_11.txt AC 320 ms 19480 KiB
01_test_12.txt AC 327 ms 19484 KiB
01_test_13.txt AC 333 ms 19528 KiB
01_test_14.txt AC 329 ms 19484 KiB
01_test_15.txt AC 324 ms 19392 KiB
01_test_16.txt AC 318 ms 19528 KiB
01_test_17.txt AC 326 ms 19624 KiB
01_test_18.txt AC 317 ms 19540 KiB
01_test_19.txt AC 307 ms 19528 KiB
01_test_20.txt AC 310 ms 19464 KiB
01_test_21.txt AC 318 ms 19504 KiB
01_test_22.txt AC 332 ms 19620 KiB
01_test_23.txt AC 356 ms 19392 KiB
01_test_24.txt AC 356 ms 19392 KiB
01_test_25.txt AC 1 ms 3484 KiB