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在區間內的...