已經沒有什麼好害怕的了

2021-07-05 02:16:38 字數 1123 閱讀 5082

給定乙個長度為n 只包含左括號和右括號的序列,求每乙個位置經過的合法子串有多少個。

空串是乙個合法的串,如果a 和b 都是合法的串,那麼(a) 和ab 都是合法的串。 令a

ns[i

] 為第

i 位的答案,對於每組資料,輸出乙個整數an

s=∑1

n(an

s[i]

∗imo

d p)

,p=1

9+7

n≤10

6 資料組數t≤

10 t

ime

limi

ts:1000ms

memory

limi

ts:512m

我們可以先用棧 處理出每對配對的括號(從左到右,左括號入棧,右括號彈出棧頂與之配對),然後用簡單的遞推計算即可。

#include 

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int n = 1e6 + 10;

const ll p = 1e9 + 7;

int n,inf;

int a[n],l[n],r[n];

int st[n],next[n],last[n];

char in[n];

ll ans,t[n];

void init()

void pre()

void solve()

for (int i = 1;i <= n;i ++)

for (int i = 1;i <= n;i ++) t[i] = r[i] + l[i];

for (int i = 1;i <= n;i ++) t[i] += t[i-1];

ll ans = 0;

for (int i = 1;i <= n;i ++) ans += 1ll * i * t[i] % p;

printf("%lld\n",ans);

}int main()

}

已經沒有什麼好害怕的了

description 小y 最近開始學習演算法姿勢,但是因為小r 非常bb,給了她很多b6 題,所以她覺得自己已經沒有什麼前途了。於是小r 給了她一些稍微簡單的題,讓她覺得已經沒有什麼好害怕的了,其中一道是這樣的 給定乙個長度為n 只包含左括號和右括號的序列,現在小r 想要知道經過每乙個位置的合法...

題解 已經沒有什麼好害怕的了

套路滿滿的樣子 o o 實際上在發現 比.多 k 實際上就是要求糖果能量大於藥片能量的組數為 k 時,這題的指向性就很明確了。按照慣例來說,我們應當試圖用 至少 來求出 恰好 的方案數。先考慮容斥的部分 如果可以求出每乙個糖果集合 t 使得 t 中的所有糖果在最後的組合方案中能量都能夠大於所匹配的藥...

bzoj 3622 已經沒有什麼好害怕的了

我好害怕這種題 兩個陣列排序後,處理出next i 表示滿足tang i yao j 的最大的j。f i j 前i種糖果,有j個糖比藥多,不考慮剩餘情況的方案數 也就是剩餘n j個糖果的放法算一種,最後乘上階乘。f i j f i 1 j f i 1 j 1 max next i j 1,0 開始忘...