本文同步更新於洛谷部落格
給定 \(a,b\),求區間 \([a,b]\) 中有多少個不含長度大於一的回文子串的數字串。
還是比較套路的數字 dp。我們傳五個引數 \(k,x,y,p,q\) 進入 dfs,分別表示列舉到第 \(k\) 位,前兩位為 \(x\),前一位為 \(y\),是否為前導 \(0\),以及這一位填的數有沒有限制,用 \(f\) 陣列記憶化即可。
下面來簡要說明一下如何判斷非回文串。不妨設回文串為 \(s_1s_2...s_n\),接下來進行分類討論:若 \(n\) 為奇數,令 \(m=\dfrac\),則 \(s_s_ms_\) 必為回文串;若 \(n\) 為偶數,令 \(m=\dfrac\),則 \(s_ms_\) 必為回文串。因此我們在填到第 \(x\) 位時,只需要判斷它與第 \(x-1\) 位和第 \(x-2\) 位是否相等即可。
我們把填前導 \(0\) 的位置設為 \(-1\),這樣會更加方便,但是 \(x\) 和 \(y\) 為 \(-1\) 的時候不能進行記憶化。
#includeusing namespace std;
#define ll long long
int len,a[20];
ll l,r,f[20][10][10];
ll dfs(int k,int x,int y,int p,int q)
if(!p&&!q&&x!=-1&&y!=-1)
f[k][x][y]=res;
return res;
}ll divide(ll x)
return dfs(len,-1,-1,1,1);
}int main()
洛谷 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在區間內的...