ログインしてください。
提出 #18440335
ソースコード 拡げる
#include <atcoder/modint> #include <iostream> #include <vector> #include <string> using namespace std; using mint = atcoder::modint998244353; void solve() { string s; int m; cin >> s >> m; int n = s.length(); auto dp = vector(2, vector(n + 1, vector(n + 1, vector(n + 1, mint(0))))); // Tの次の文字, Sの今見てるindex, 1の前借り数, 操作回数 dp[0][0][0][0] = dp[1][0][0][0] = 1; for (int i = 0; i < n; ++i) { for (int j = 0; j <= n; ++j) { for (int k = 0; k <= n; ++k) { if (s[i] == '0') { // 0-0: スキップ if (i < n) { for (int nc = 0; nc < 2; ++nc) { dp[nc][i + 1][j][k] += dp[0][i][j][k]; } } // 0-1: 1を貰う if (j < n && k < n) { for (int nc = 0; nc < 2; ++nc) { dp[nc][i][j + 1][k + 1] += dp[1][i][j][k]; } } } else { // 1-0: 1を消す // このときだけ相手の文字は0のまま if (i < n && j > 0) { dp[0][i + 1][j - 1][k] += dp[0][i][j][k]; } // 1-1: スキップ if (i < n) { for (int nc = 0; nc < 2; ++nc) { dp[nc][i + 1][j][k] += dp[1][i][j][k]; } } } } } } mint ans = 0; for (int k = 0; k <= n && k <= m; ++k) { ans += dp[0][n][0][k]; } cout << ans.val() << "\n"; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); solve(); return 0; }
提出情報
提出日時 | |
---|---|
問題 | C - Shift |
ユーザ | Tiramister |
言語 | C++ (GCC 9.2.1) |
得点 | 800 |
コード長 | 1946 Byte |
結果 | AC |
実行時間 | 374 ms |
メモリ | 332700 KiB |
ジャッジ結果
セット名 | Sample | All | ||||
---|---|---|---|---|---|---|
得点 / 配点 | 0 / 0 | 800 / 800 | ||||
結果 |
|
|
セット名 | テストケース |
---|---|
Sample | s1.txt, s2.txt, s3.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, s1.txt, s2.txt, s3.txt |
ケース名 | 結果 | 実行時間 | メモリ |
---|---|---|---|
01.txt | AC | 358 ms | 330564 KiB |
02.txt | AC | 347 ms | 328368 KiB |
03.txt | AC | 344 ms | 322016 KiB |
04.txt | AC | 354 ms | 332628 KiB |
05.txt | AC | 352 ms | 330512 KiB |
06.txt | AC | 353 ms | 328428 KiB |
07.txt | AC | 347 ms | 322040 KiB |
08.txt | AC | 355 ms | 332600 KiB |
09.txt | AC | 374 ms | 330412 KiB |
10.txt | AC | 333 ms | 328372 KiB |
11.txt | AC | 342 ms | 322012 KiB |
12.txt | AC | 355 ms | 332652 KiB |
13.txt | AC | 354 ms | 330532 KiB |
14.txt | AC | 348 ms | 328380 KiB |
15.txt | AC | 336 ms | 322060 KiB |
16.txt | AC | 346 ms | 332648 KiB |
17.txt | AC | 373 ms | 330528 KiB |
18.txt | AC | 349 ms | 328360 KiB |
19.txt | AC | 328 ms | 322080 KiB |
20.txt | AC | 335 ms | 332696 KiB |
21.txt | AC | 333 ms | 330348 KiB |
22.txt | AC | 337 ms | 328420 KiB |
23.txt | AC | 363 ms | 321904 KiB |
24.txt | AC | 372 ms | 332576 KiB |
25.txt | AC | 334 ms | 330436 KiB |
26.txt | AC | 330 ms | 328304 KiB |
27.txt | AC | 344 ms | 322100 KiB |
28.txt | AC | 356 ms | 332660 KiB |
29.txt | AC | 4 ms | 3600 KiB |
30.txt | AC | 2 ms | 3596 KiB |
31.txt | AC | 3 ms | 3604 KiB |
32.txt | AC | 2 ms | 3628 KiB |
33.txt | AC | 3 ms | 3964 KiB |
34.txt | AC | 336 ms | 332552 KiB |
35.txt | AC | 335 ms | 332700 KiB |
36.txt | AC | 3 ms | 3604 KiB |
s1.txt | AC | 2 ms | 3612 KiB |
s2.txt | AC | 2 ms | 3476 KiB |
s3.txt | AC | 13 ms | 7304 KiB |