%%%%%%%%%%%lst神仙 這是他的做法 吊了標算
對於這種有多少區間滿足要求的 我們套路的用分治做 每次都統計左端點在左半邊 右端點在右半邊的個數
設f(i) 表示當前點到中間分割點的最大值,g(i)表示當前點到中間分割點的或和
我們發現 g(i)≥f(i) 所以只需找到g[i]=f[i]的區間就好
然後f肯定是單調遞增的
所以可以維護雙指標
邊界條件很壞壞 膜lst神仙啊
#include#define n 1000005
#define int long long
using namespace std;
templateinline void read(t &x)
int n,s[n],f[n],g[n],ans;
inline void solve(int l,int r)
} solve(l,mid);
solve(mid+1,r);
}main()
NOIP校內模擬 T2 字胡串(分治)
lst神仙 這是他的做法 吊了標算 對於這種有多少區間滿足要求的 我們套路的用分治做 每次都統計左端點在左半邊 右端點在右半邊的個數 設f i 表示當前點到中間分割點的最大值,g i 表示當前點到中間分割點的或和 我們發現 g i f i 所以只需找到g i f i 的區間就好 然後f肯定是單調遞增...
NOIP模擬 字胡串(單調棧)
只剩5分鐘的時候打了乙個三重迴圈。完全沒想到固定左端點減少1個n。被diss了一波。對於乙個區間,如果他合法,那麼一定是有乙個非最大數在二進位制下與最大數有不同的地方,所以對於乙個數,利用單調棧記錄他作為最大數的區間 左右第乙個至少有一位與他不同的地方,利用容斥原理計算一下統計答案即可,複雜度 然後...
NOIP 模擬題 T2 寶藏(樹形dp)
題解 樹形dp 其實這道題說起來很簡單,用四個陣列 d1 d0 u0 u1分別表示從當前點向下更新,不返回 從當前點向下更新再回到當前點 從當前點向上更新回到當前點 從當前點向上更新不返回。用兩遍dfs求出這四個陣列 實現起來細節會比較多,耐心處理 include include include d...