小y 最近開始學習演算法姿勢,但是因為小r 非常bb,給了她很多b6 題,所以她覺得自己已經沒有什麼前途了。於是小r 給了她一些稍微簡單的題,讓她覺得已經沒有什麼好害怕的了,其中一道是這樣的:
給定乙個長度為n 只包含左括號和右括號的序列,現在小r 想要知道經過每乙個位置的合法子串有多少個。
空串是乙個合法的串,如果a 和b 都是合法的串,那麼(a) 和ab 都是合法的串。
第一行輸入乙個正整數t 表示資料組數。接下來t 行每行乙個字串。
對於每組資料,輸出乙個整數表示答案,令ansi 為經過第i 個位置的子串個數,那麼你需要輸出(注意是先求餘再求和)
1()()
20樣例解釋:
ans 陣列為,所以輸出20。
對於10% 的資料,n<=100
對於30% 的資料,n <= 1000
對於60% 的資料,n <= 5 <= 10^4
對於100% 的資料,n <= 10^6,1 <= t<= 10
差分陣列
首先用棧找出所有左括號對應的右括號
用差分陣列維護字首和
#include
#include
#include
#define mod 1000000007
#define ll long long
using
namespace std;
const
int n=
1e6+77;
ll t,len,f[n]
,num1[n]
,num2[n]
,k[n]
,l[n]
,r[n]
,ans;
char s[n]
;int
main()
}
五校聯考1day1 已經沒有什麼好害怕的了
description 小y 最近開始學習演算法姿勢,但是因為小r 非常bb,給了她很多b6 題,所以她覺得自己已經沒有什麼前途了。於是小r 給了她一些稍微簡單的題,讓她覺得已經沒有什麼好害怕的了,其中一道是這樣的 給定乙個長度為n 只包含左括號和右括號的序列,現在小r 想要知道經過每乙個位置的合法...
五校聯考1day1 線段樹什麼的最討厭了
只要呼叫buildtree 1,0,n 就可以得到一顆線段樹了。顯然,一顆線段樹一共有o n 個節點,因為每乙個節點都代表了乙個不同的區間,所以線段樹上一共出現了o n 個不同的區間。現在給了你乙個區間 l,r 他想要你告訴他乙個最小的n 使得區間 l r 出現在了用buildtree 1,0,n ...
五校聯考1day1 我才不是蘿莉控呢
小y 小r 你是蘿莉控嗎。小r 為了避免這個尷尬的話題,小r 決定給小y 做一道題。有乙個長度為n 的正整數陣列a,滿足ai ai 1,現在構造乙個陣列b,令bi 現在,有乙個n n 的網格圖,左下角座標是 1,1 右上角座標是 n,n 有乙個小sb正在座標為 n,1 的位置,每一時刻,如果他現在在...