Submission #54678108
Source Code Expand
// LUOGU_RID: 162468012
#include <bits/stdc++.h>
using namespace std;
const int P = 998244353;
inline void add(int &x, int k) { x += k; x -= x >= P ? P : 0; }
int n;
char a[305];
int dp[305][305][305]; // 保留后缀 [i + 1, n]
bool ok[305][305][305];
int main(void) {
ios::sync_with_stdio(0);
cin >> a + 1; n = strlen(a + 1);
ok[0][0][0] = 1;
for (int i = 1; i <= n; ++i) for (int j = n; j >= 0; --j) for (int k = n; k >= 0; --k) {
ok[i][j][k] |= ok[i - 1][j][k] | ok[i][j + 1][k] | ok[i][j][k + 1]; // 自己干掉自己,放在序列开头
if (j && i >= 2 && (a[i] == '0' || a[i - 1] == '0')) ok[i][j][k] |= ok[i - 2][j - 1][k];
if (k && i >= 2 && (a[i] == '1' || a[i - 1] == '1')) ok[i][j][k] |= ok[i - 2][j][k - 1];
if (j && a[i] == '0') ok[i][j][k] |= ok[i - 1][j - 1][k + 1]; // 另一种是 ok[i - 1][j][k]
if (k && a[i] == '1') ok[i][j][k] |= ok[i - 1][j + 1][k - 1];
}
dp[n][0][0] = 1;
for (int i = n; i >= 1; --i) for (int j = 0; j <= n; ++j) for (int k = 0; k <= n; ++k) if (dp[i][j][k]) {
add(dp[i - 1][j][k], dp[i][j][k]);
if (a[i] == '1') add(dp[i][j + 1][k], dp[i][j][k]);
else add(dp[i][j][k + 1], dp[i][j][k]);
}
int ans = -1; // 空串不算
for (int i = 0; i <= n; ++i) for (int j = 0; j <= n; ++j) for (int k = 0; k <= n; ++k) add(ans, ok[i][j][k] ? dp[i][j][k] : 0);
cout << (ans + P) % P << "\n";
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Secret Passage |
| User | james1BadCreeper |
| Language | C++ 17 (gcc 12.2) |
| Score | 1100 |
| Code Size | 1496 Byte |
| Status | AC |
| Exec Time | 301 ms |
| Memory | 140100 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:15:14: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
15 | cin >> a + 1; n = strlen(a + 1);
| ~~^~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1100 / 1100 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| 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, s1.txt, s2.txt, s3.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01.txt | AC | 296 ms | 139140 KiB |
| 02.txt | AC | 293 ms | 138480 KiB |
| 03.txt | AC | 291 ms | 137544 KiB |
| 04.txt | AC | 301 ms | 140100 KiB |
| 05.txt | AC | 298 ms | 139296 KiB |
| 06.txt | AC | 292 ms | 137988 KiB |
| 07.txt | AC | 291 ms | 136800 KiB |
| 08.txt | AC | 296 ms | 137656 KiB |
| 09.txt | AC | 179 ms | 32208 KiB |
| 10.txt | AC | 269 ms | 138176 KiB |
| 11.txt | AC | 292 ms | 137176 KiB |
| 12.txt | AC | 301 ms | 139972 KiB |
| 13.txt | AC | 295 ms | 139240 KiB |
| 14.txt | AC | 291 ms | 138388 KiB |
| 15.txt | AC | 281 ms | 129816 KiB |
| 16.txt | AC | 290 ms | 140024 KiB |
| 17.txt | AC | 289 ms | 136272 KiB |
| 18.txt | AC | 291 ms | 135996 KiB |
| 19.txt | AC | 1 ms | 3400 KiB |
| 20.txt | AC | 1 ms | 3416 KiB |
| 21.txt | AC | 1 ms | 3652 KiB |
| 22.txt | AC | 1 ms | 3532 KiB |
| 23.txt | AC | 1 ms | 3540 KiB |
| 24.txt | AC | 1 ms | 3512 KiB |
| s1.txt | AC | 1 ms | 3508 KiB |
| s2.txt | AC | 1 ms | 3568 KiB |
| s3.txt | AC | 11 ms | 13012 KiB |