2021牛客寒假演算法基礎集訓營1 補題報告

2021-10-22 11:46:18 字數 1590 閱讀 7693

長度不超過nn,且包含子串行「us」的、只由小寫字母構成的字串有多少個? 答案對1e9

+7

1e9+7

1e9+

7取模。

所謂子串行,指乙個字串刪除部分字元(也可以不刪)得到的字串。

例如,「unoacscc"包含子串行"us」,但"scscucu"則不包含子串行"us"

乙個正整數n,(

2≤n≤

106)

n,(2\le n\le10^6)

n,(2≤n

≤106

)乙個正整數,為滿足條件的字串數量對109

+7

10^9+7

109+

7取模的值

定義dp[i]為長度為i且包含子串行"us"的字串的數量。

那麼對於長度i+1而言,包含子串行"us"的字串有兩類:

①前i個字元已經包含了子串行"us",後面接任意乙個字元。數量為dp[

i]∗26

dp[i]*26

dp[i]∗

26。②前i個字元包含字母u,但不包含子串行"us"。後面再接乙個字元』s』即可。數量為26i

−25i

−dp[

i]

26^i-25^i-dp[i]

26i−25

i−dp

[i]。

兩者相加即為dp[i+1]

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

#define ll long long

#define ull unsigned long long

#define endl '\n'

const ll mod =

1e9+7;

const ll inf =

0x3f3f3f3f

;const

int n =

1e5+7;

const

int maxn =

107;

const

double eps =

1e-6

;const

double pi =

acos(-

1);using

namespace std;

ll ksm

(ll a, ll b, ll p = mod)

b >>=1;

a = a * a % p;

}return ans;

}ll dp[

1000007];

intmain()

ll ans =0;

for(

int i =

1; i <= n;

++i)

cout << ans << endl;

return0;

}

2021牛客寒假演算法基礎集訓營3

三場牛客下來覺得自己越來越不在狀態,思路不清晰,一下手就是bug,每調完一題刷下榜都被甩開十里地,罰時慘不忍睹 傳送門 簽到 include using namespace std typedef long long ll const ll inf 0x3f3f3f3f const ll mod 1...

2021牛客寒假演算法基礎集訓營1

題目描述 請你構造乙個非空的括號字串,包含正好 k 個不同合法括號對。所謂括號字串,是指由 和 這兩種字元構成的字串。要求構造的字串長度不超過100000。輸入描述 乙個整數 k。乙個整數 kk。0 k 1e9 輸出描述 乙個僅包含左右括號字串,其中有 kk 個合法的括號對。如果有多種構造方法,輸出...

2021牛客寒假演算法基礎集訓營6

思路 k1排k2前面滿足 k1.a k2.ax k2.b k1.b k1.ax k1.b k2.b k2.ak1.b k2.b k1.a k2.a k1.b include define ull unsigned long long define ll long long const int inf...