洛谷 P8003 題解

2022-09-06 22:24:27 字數 1566 閱讀 8872

hard brackets inserting - 洛谷

提交率 1.13k 但是通過人數 22 最可怕的是還是道藍題。

這個題的通過率比較離譜,不過也可以理解,因為這道題的性質有點容易想錯,即使非常接近也過不了這道題。

我們通過簡單的手摸可以發現簡單的規律,我們發現我們填進去的括號首先一定不能夠形成新的括號,並且左括號和右括號是相對獨立的,我們只能把左括號加入進最右邊的一段左括號中或者是末尾,但是要注意,插入到最右邊的一段左括號中依然有限制,那就是這最右邊的一段左括號不能被其它括號對所包含,右括號同理。

注意關於 \(n=2\) 的特判,\(n=2\) 的時候隨便插入,沒有上面不能組成統一括號對的限制。

處理出來直接統計即可。

**:

#include#define dd double

#define ld long double

#define ll long long

#define uint unsigned int

#define ull unsigned long long

#define n 1000100

#define m number

using namespace std;

const int inf=0x3f3f3f3f;

const int mod=998244353;

templateinline void read(t &x)

int n,m,t,f[n],g[n],jie[n],inv[n],jieinv[n],ans;

const int lim=1000000;

char s[n];

inline int c(int n,int m)return res;}

int main()

int cnt1=0,cnt2=0;

for(int i=n;i>=1;i--)

cnt2++;

}if(cnt1==cnt2) break;

}// printf("%d %d\n",cnt1,cnt2);

if(cnt1==-inf)

else

// for(int i=0;i<=m-n;i++) printf("%d ",f[i]);puts("");

cnt1=cnt2=0;

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

cnt1++;

}if(s[i]==')') cnt2++;

if(cnt1==cnt2) break;

}// printf("%d %d\n",cnt1,cnt2);

if(cnt2==-inf)

else

// for(int i=0;i<=m-n;i++) printf("%d ",g[i]);puts("");

for(int i=0;i<=m-n;i++) ans=(ans+1ll*f[i]*g[m-n-i]%mod)%mod;

printf("%d\n",ans);ans=0;

for(int i=0;i<=m-n;i++) f[i]=g[i]=0;

}return 0;

}

洛谷 P1101 題解

這道題可以用深搜 回溯 來寫,相信大部分人都是這麼想的,但是有些人可能在一些地方饒了半天,所以這裡就貼一下我的思路,個人覺得自己的很好懂,除了tx和ty那裡,但是tx和ty的那種用法對於輸出路徑的題目一般很實用 這個算是比較簡單的吧,題目裡給出了具體要找的字串,我們要做的就是對它進行8個方向的搜尋,...

洛谷 P1169 題解

請你在乙個黑白矩陣中選出乙個長方形 含正方形 和正方形的子矩陣,使得所有相鄰的點顏色不一樣。矩陣大小 兩條邊都 2000 2000 2 000輸入 3 31 0 1 0 1 0 1 0 0輸出4 6解釋給定矩陣 正方形 長方形 我的控制台是萌萌噠 ffc0cb粉色 乙個小技巧 如果您的控制台是像我的...

題解 洛谷 P3332

題目描述 權值線段樹套線段樹板子題 首先觀察題目,判斷為二維偏序問題 操作1為區間修改,所以一定是外部線段樹維護權值,內部線段樹維護所在區間,否則時間複雜度 qwq 為方便查詢,雜湊時我採用雜湊每個數的相反數的方法將求第k大轉換為求第k小 詢問可以直接想到的做法就是二分答案,查詢1 ans在區間內的...