簡單的序列

2021-08-26 08:49:21 字數 1077 閱讀 8487

從前有個括號序列s,滿足|s|=m。

你需要統計括號序列對(p,q)的數量。

其中(p,q)滿足|p|+|s|+|q|=n,且p+s+q是乙個合法的括號序列。

從檔案bracket.in中讀入資料。

第一行兩個正整數n,m。

第二行乙個長度為m的括號序列,表示s。

輸出到檔案bracket.out中。

輸出一行乙個整數,表示符合條件的(p,q)的數量對10^9+7取模的值。

4 1 (

4bracket.in

4 4(())

bracket.out

1bracket.in

4 3(((

bracket.out

0【資料範圍與約定】

對於10%的資料,n≤20;

對於25%的資料,n≤200;

對於另外5%的資料,n=m;

對於55%的資料,n−m≤200;

對於100%的資料,1≤m≤n≤100000 ,n−m≤2000。

好題,幾個有啟發的小技巧。

1、括號序列合法:「(」:-1,「)」:1,合法維護字首和sum=0

2、f[i][j]表示前i個括號中,未被匹配的左括號有多少個,則g[i][j](前i個括號中,未被匹配的右括號有多少個)=f[i][j]

對於(() 我們將它反向之後 =》()),豈不就可以互相轉化!!!

我們統計出s有多少左括號沒被匹配數量l,右括號沒被匹配數量r,則:

ans=f[i][r+j]*f[n-m-i][l+j](r<=i<=n-m-l)

#includeusing namespace std;

const int n = 1e5+10,mod = 1e9+7;

#define ll long long

int l,r,ans;

int n,m,a[n];

int f[2010][2010];

inline void init()

}inline void dp() }}

inline void solv()

int main()

時間序列簡單介紹

births birthstimeseries月度資料就設定frequency 12,季度資料就設定frequency 4 start 引數來指定收集資料的第一年和這一年第乙個間隔期。接下來我們用plot函式繪製時間序列圖 plot.ts birthstimeseries 可以看到這個時間序列在一定...

時間序列簡單總結

今天看了一下唐宇迪的時間序列分析,對時間序列有了初步的認識。首先時間序列即以時間未變化 x軸 的一系列資料。這個資料可能變化的情況非常劇烈,所以不便於分析,我們希望它能反應出穩定的變化趨勢,這時候便有了arima模型,這個模型主要反映的還是資料的以時間為橫軸的差分變化情況,一階差分即將t時刻資料值減...

Oracle中序列的簡單使用

在oracle資料庫中沒有mysql中那樣的自增長,只能通過序列來實現主鍵的自動生成,下面來總結一下序列的簡單使用 一 建立 create sequence user.sequence name increment by n start with n maxvalue n nomaxvalue mi...