日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 1015F Bracket Substring AC自动机 + dp

發布時間:2025/3/16 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 1015F Bracket Substring AC自动机 + dp 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Bracket Substring

這么垃圾的題怎么以前都不會寫啊, 現在一眼怎么就會啊。。。。

考慮dp[ i ][ j ][ k ][ op ] 表示 已經填了 i 個空格, 末尾串匹配到 所給串的 第 j 個, 已經放了 k 個左括號, 是否存在所給串的方案數。

因為不匹配的不是從頭開始的, 所以暴力求下一個或者直接ac自動機都可以。

#include<bits/stdc++.h> #define LL long long #define LD long double #define ull unsigned long long #define fi first #define se second #define mk make_pair #define PLL pair<LL, LL> #define PLI pair<LL, int> #define PII pair<int, int> #define SZ(x) ((int)x.size()) #define ALL(x) (x).begin(), (x).end() #define fio ios::sync_with_stdio(false); cin.tie(0);using namespace std;const int N = 200 + 7; const int inf = 0x3f3f3f3f; const LL INF = 0x3f3f3f3f3f3f3f3f; const int mod = 1e9 + 7; const double eps = 1e-8; const double PI = acos(-1);template<class T, class S> inline void add(T& a, S b) {a += b; if(a >= mod) a -= mod;} template<class T, class S> inline void sub(T& a, S b) {a -= b; if(a < 0) a += mod;} template<class T, class S> inline bool chkmax(T& a, S b) {return a < b ? a = b, true : false;} template<class T, class S> inline bool chkmin(T& a, S b) {return a > b ? a = b, true : false;}struct Ac {int ch[N][26], f[N], tot, sz;int n, tar, dp[N][N][N][2];char s[N];inline int newNode() {tot++; f[tot] = 0;memset(ch[tot], 0, sizeof(ch[tot]));return tot;}void init(int _sz) {sz = _sz; tot = -1; newNode();}inline int idx(int c) {return c - '(';}void addStr(char* s) {int u = 0;for(int i = 0; s[i]; i++) {int c = idx(s[i]);if(!ch[u][c]) ch[u][c] = newNode();u = ch[u][c];}tar = u;}void build() {queue<int> que;for(int c = 0; c < sz; c++) {int v = ch[0][c];if(!v) ch[0][c] = 0;else f[v] = 0, que.push(v);}while(!que.empty()) {int u = que.front(); que.pop();for(int c = 0; c < sz; c++) {int v = ch[u][c];if(!v) ch[u][c] = ch[f[u]][c];else f[v] = ch[f[u]][c], que.push(v);}}}void solve() {init(2);scanf("%d", &n);scanf("%s", s);addStr(s);build();dp[0][0][0][0] = 1;for(int i = 0; i < 2 * n; i++) {for(int u = 0; u <= tot; u++) {for(int c = 0; c <= n; c++) {for(int p = 0; p < 2; p++) {if(!dp[i][u][c]) continue;if(c <= n) {int v = ch[u][0];add(dp[i + 1][v][c + 1][p || v == tar], dp[i][u][c][p]);}if(i - c < c) {int v = ch[u][1];add(dp[i + 1][v][c][p || v == tar], dp[i][u][c][p]);}}}}}int ans = 0;for(int u = 0; u <= tot; u++)add(ans, dp[2 * n][u][n][1]);printf("%d\n", ans);} } ac;int main() {ac.solve();return 0; }/* */

?

轉載于:https://www.cnblogs.com/CJLHY/p/10791362.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Codeforces 1015F Bracket Substring AC自动机 + dp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人免费网站www网站高清 | 国产鲁鲁视频在线观看免费 | 国产av人人夜夜澡人人爽麻豆 | 久久四虎| 经典一区二区三区 | 成人黄色在线观看视频 | 五月婷婷色丁香 | 黄色av电影在线观看 | 久久金品| 日本不卡一区视频 | 黄色特级一级片 | 国产婷婷色一区二区 | 天海翼av| 无套内谢大学处破女www小说 | 天堂最新资源在线 | 日韩精品一区二区三区高清免费 | 麻豆短视频在线观看 | 欧美黄色一区二区三区 | 我要看免费的毛片 | 五月天开心网 | 日韩精品视频中文字幕 | 人人插人人插 | 99一区二区三区 | 曰本女人与公拘交酡 | 欧美无马| 国产xxxxx视频| 欧美变态口味重另类 | 国产永久免费观看 | 91视频久久久久 | 久草视频手机在线观看 | 一级做a爱片性色毛片 | 国产色婷婷一区二区三区竹菊影视 | 少妇诱惑av | 欧美两根一起进3p做受视频 | 欧美日韩免费网站 | 国产精品17p | 久伊人网 | 青青草国产在线观看 | 免费在线不卡av | 国产1区在线观看 | 99热免费在线 | 在线免费观看网站入口在哪 | 国产精品美女毛片真酒店 | 亚洲av人人澡人人爽人人夜夜 | 国产精品一区二区入口九绯色 | www视频在线观看免费 | 成人午夜在线观看视频 | 国产中年熟女高潮大集合 | 亚洲国产精品一区二区三区 | 亚洲夜夜爱 | 第一av| 精品人妻一区二区三区四区五区 | 欧美50p| 久射网| 国产一级在线播放 | 中文字幕观看 | 饥渴少妇色诱水电工 | 亚洲精品视频在线 | 欧美第一页在线观看 | 就去吻亚洲 | 久久国产精品电影 | 久久爱综合 | 欧美亚洲激情视频 | 国产精品成人久久电影 | 91社区在线播放 | 国产黄色免费看 | 欧美9999 | 成人伊人网 | 日本99视频 | 亲子伦视频一区二区三区 | 99999av| 熟女俱乐部一区二区 | 人人干网站 | 在线免费日韩av | 欧美一区二不卡视频 | 日韩一级片av | 欧美人喂奶吃大乳 | 人妻在卧室被老板疯狂进入 | 精品久久五月天 | 一级绝黄| 国产欧美视频一区二区 | 日本免费一区二区三区最新 | 99爱免费视频 | 内射国产内射夫妻免费频道 | 国产亚洲精品成人a | 白嫩初高中害羞小美女 | 色午夜 | 黄网在线观看视频 | 国产人人看 | 久久精品国产亚洲av麻豆蜜芽 | 国产午夜精品一区二区三区四区 | 精品在线免费视频 | 久久久久久99精品 | 粉嫩aⅴ一区二区三区四区五区 | 国产免费a视频 | 精品婷婷色一区二区三区蜜桃 | 三级大片在线观看 | 狗爬女子的视频 | wwwxxx日韩 |