牛客網NOIP賽前集訓營 普及組(第一場) C

2021-08-27 14:00:26 字數 817 閱讀 3080

小a有乙個只包含左右括號的字串s。但他覺得這個字串不夠美觀,因為它不是乙個合法的括號串。乙個合法的括號串是這樣定義的:

1. ()是合法的括號串

2. 若a是合法的括號串,則(a)則是合法的括號串

3. 若a,b是合法的括號串,則ab也是合法的括號串。

小a現在希望刪掉s中若干個字元,使得剩下的字串是乙個合法的括號串。小a想知道有多少不同的方案。兩個方案是不同的,當且僅當他們刪除的位置不同。比如當s是(()時,有兩種方案。分別是刪掉第乙個位置,或是刪掉第二個位置。

輸入描述:

第一行乙個整數n,代表s的長度。第二行輸入n個字元。代表串s。

輸出描述:

一行乙個整數,代表不同的方案數。答案對10^9+7取模。

示例1

輸入 8

)(()(())

輸出 30

一道經典dp題,我們可以根據題目分情況討論,若是「(」則可從i往前更新,否則就從1往i更新,這樣就行了。

上**

#include

#define ll long long

using

namespace

std;

const ll mod=1e9+7;

ll n,dp[10010];

char s[10010];

int main()

printf("%lld\n",(dp[1]-1+mod)%mod);

return

0;}

2020牛客NOIP賽前集訓營 提高組(第四場)

有 f n 2 f 2 f 1 f 2 f 2 f 2 令 g n f n 2 很自然的有 g n 2g 2g g 將遞推式寫成矩陣的形式 a 令 vec n 為 g n,g g t 可以逆推出 vec 0 把 vec 表示成 a n vec 將題目中的 f s sum limits g sum l...

牛客CSP S提高組賽前集訓營2

然後隨便用乙個資料結構維護一下就行了,我寫的線段樹。我們先找出每個環,然後我們先刪連線環的邊,每刪一條就可以多產生乙個聯通塊,在考慮刪環邊,發現從最大的環刪起一定最優 因為你刪的第一條邊得不到任何新的聯通塊 就很容易想到tar jantarjan tarjan 發現你只能寫出80 8080 分,因為...

牛客CSP S提高組賽前集訓營1

比賽鏈結 官方題解 before t1觀察 結論題,t2樹形dp,可以換根或up down,t3正解妙,轉化為圖上問題。題目質量不錯,但資料太水了 一共n個石子堆,每個石子堆有ai個石子,兩人輪流對石子塗色 先手塗紅,後手塗藍 且需要保證當前回合塗的石子顏色不能和它相鄰的兩個同色,誰塗不下去誰輸。一...