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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Nun Heh Heh Aaaaaaaaaaa 字符串,dp

發(fā)布時(shí)間:2025/3/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nun Heh Heh Aaaaaaaaaaa 字符串,dp 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意 :

  • 給一字符串,求其有多少個(gè)子序列為𝚗𝚞𝚗𝚑𝚎𝚑𝚑𝚎𝚑加上若干個(gè)a(大于等于1),最后%998244353

思路 :

  • 由非連續(xù)子序列聯(lián)想到dp
  • 預(yù)處理,cnta數(shù)組代表第i個(gè)后面出現(xiàn)的字母a的個(gè)數(shù)
  • 對(duì)于第i個(gè)后面的所有的a每一個(gè)選與不選一共有2n2^n2n種情況,因?yàn)椴荒苁强占?#xff0c;所以是2n?12^n-12n?1種情況
  • f[i,j]f[i, j]f[i,j]表示前i個(gè)字符中以numhehheh中第j個(gè)結(jié)尾的個(gè)數(shù)
  • 將它們相乘就是位置i的貢獻(xiàn),再?gòu)那巴蟊闅v相加每一個(gè)點(diǎn)的貢獻(xiàn)就是總的方案數(shù)
#include <iostream> #include <cstring>using namespace std;typedef long long ll;const ll mod = 998244353; const int N = 1e5 + 10;ll cnta[N], f[N][10];ll qmi(ll a, ll b, ll p) {ll res = 1 % p;while (b){if (b & 1) res = res * a % p;a = a * (ll)a % p;b >>= 1;}return res; }int main() {int T;cin >> T;while (T -- ){string s;cin >> s;s = " " + s;// 多組輸入memset(f, 0, sizeof f);memset(cnta, 0, sizeof cnta);// 預(yù)處理,i及之后出現(xiàn)a的個(gè)數(shù)for (int i = s.size(); i; i -- ) cnta[i] = cnta[i + 1] + (s[i] == 'a');ll res = 0;for (int i = 1; i <= s.size(); i ++ ){f[i][1] = (f[i - 1][1] + (s[i] == 'n')) % mod;f[i][2] = (f[i - 1][2] + f[i - 1][1] * (s[i] == 'u')) % mod;f[i][3] = (f[i - 1][3] + f[i - 1][2] * (s[i] == 'n')) % mod;f[i][4] = (f[i - 1][4] + f[i - 1][3] * (s[i] == 'h')) % mod;f[i][5] = (f[i - 1][5] + f[i - 1][4] * (s[i] == 'e')) % mod;f[i][6] = (f[i - 1][6] + f[i - 1][5] * (s[i] == 'h')) % mod;f[i][7] = (f[i - 1][7] + f[i - 1][6] * (s[i] == 'h')) % mod;f[i][8] = (f[i - 1][8] + f[i - 1][7] * (s[i] == 'e')) % mod;// 輪到匹配串中的最后一個(gè)位置時(shí),與總方案res直接相關(guān),就不用加上f[i - 1][9],因?yàn)檠h(huán)在i - 1的時(shí)候,已經(jīng)加到res中去了,現(xiàn)在不需要加,否則會(huì)重復(fù)f[i][9] = (f[i - 1][8] * (s[i] == 'h')) % mod;if (f[i][9]) res = (res + f[i][9] * (qmi(2, cnta[i + 1], mod) - 1) % mod) % mod;}cout << res << endl;}return 0; }

總結(jié)

以上是生活随笔為你收集整理的Nun Heh Heh Aaaaaaaaaaa 字符串,dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。