從前有個括號序列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...