1 条题解
-
0
P7248 [BalticOI 2012] 括号 (Day1)
题目思路
简单 dp 题。
设 表示到第 个位置有 个未匹配括号时的方案数,则易推出状态转移方程。
- 当当前遍历到的字符不是左括号:。
- 当当前遍历到的字符是左括号:。
记得取余 !
由于数据范围大,所以要使用滚动数组优化,防 MLE。
此外,吸氧也要卡常!
code
#include <bits/stdc++.h> using namespace std; const int mod = 1e9 + 9; int dp[2][30005]; signed main() { dp[0][0] = 1; int n; cin >> n; for (int i = 1; i <= n; i++) { char a; cin >> a; for (int j = 0; j <= min(n - i, i); j++) { if (a == ')' || j == 0) dp[i & 1][j] = dp[i + 1 & 1][j + 1] % mod; else dp[i & 1][j] = (dp[i + 1 & 1][j + 1] + dp[i + 1 & 1][j - 1]) % mod; } } cout << dp[n & 1][0]; return 0; }
- 1
信息
- ID
- 5149
- 时间
- 1000ms
- 内存
- 164MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者