結果
| 問題 |
No.291 黒い文字列
|
| ユーザー |
maine_honzuki
|
| 提出日時 | 2021-05-13 18:29:47 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,144 bytes |
| コンパイル時間 | 2,408 ms |
| コンパイル使用メモリ | 206,620 KB |
| 最終ジャッジ日時 | 2025-01-21 10:37:57 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 25 WA * 1 |
ソースコード
//https://ncode.syosetu.com/n4830bu/291/
#include <bits/stdc++.h>
using namespace std;
int main() {
string S;
cin >> S;
string maine = "KUROI";
vector dp(30, vector(30, vector(30, vector(30, -10000))));
dp[0][0][0][0] = 0;
for (auto&& c : S) {
auto dp_nxt = dp;
for (int idx0 = 0; idx0 < 20; idx0++) {
for (int idx1 = 0; idx1 < 20; idx1++) {
for (int idx2 = 0; idx2 < 20; idx2++) {
for (int idx3 = 0; idx3 < 20; idx3++) {
for (int i = 0; i < 5; i++) {
if (c == maine[i] || c == '?') {
if (i == 0)
dp_nxt[idx0 + 1][idx1][idx2][idx3] = max(dp_nxt[idx0 + 1][idx1][idx2][idx3], dp[idx0][idx1][idx2][idx3]);
if (i == 1 && idx0 > 0)
dp_nxt[idx0 - 1][idx1 + 1][idx2][idx3] = max(dp_nxt[idx0 - 1][idx1 + 1][idx2][idx3], dp[idx0][idx1][idx2][idx3]);
if (i == 2 && idx1 > 0)
dp_nxt[idx0][idx1 - 1][idx2 + 1][idx3] = max(dp_nxt[idx0][idx1 - 1][idx2 + 1][idx3], dp[idx0][idx1][idx2][idx3]);
if (i == 3 && idx2 > 0)
dp_nxt[idx0][idx1][idx2 - 1][idx3 + 1] = max(dp_nxt[idx0][idx1][idx2 - 1][idx3 + 1], dp[idx0][idx1][idx2][idx3]);
if (i == 4 && idx3 > 0)
dp_nxt[idx0][idx1][idx2][idx3 - 1] = max(dp_nxt[idx0][idx1][idx2][idx3 - 1], dp[idx0][idx1][idx2][idx3] + 1);
}
}
}
}
}
}
swap(dp, dp_nxt);
}
int book = 0;
for (int idx0 = 0; idx0 < 20; idx0++) {
for (int idx1 = 0; idx1 < 20; idx1++) {
for (int idx2 = 0; idx2 < 20; idx2++) {
for (int idx3 = 0; idx3 < 20; idx3++) {
book = max(book, dp[idx0][idx1][idx2][idx3]);
}
}
}
}
cout << book << endl;
}
maine_honzuki