p4887 第十四分塊(前體)
二次離線莫隊。。新技能get。。
用於可以使用莫隊且單次轉移的效率不是 \(o(1)\) 的情況。
對於每次指標移動,先不直接算,而是把詢問差分然後再次離線詢問。
這樣可以算出每一問對於上乙個詢問的答案的變化量,最後再重新按末對的順序加起來就可以。
#include #define ll long long
using namespace std;
const int n=1e5+10;
int read()
while(ch>='0'&&ch<='9')
return x*f;
}void print(ll x)
int n,m,k,b;
int a[n],be[n];
struct queryq[n];
bool cmp(query x,query y)
};vectorve[n];
int main()
for(int i=1;i<=m;++i)
sort(q+1,q+1+m,cmp);
for(int i=0;i<16384;++i)
if(__builtin_popcount(i)==k) c.push_back(i);
for(int i=1;i<=n;++i)
//l-- f(x,[x+1,r])=f(x,[1,r])-f(x,[1,x])
if(r>q[i].r) ve[l-1].push_back(p(q[i].r+1,r,q[i].id,1));
while(r>q[i].r)
//r-- -f(x,[l,x-1])=-f(x,[1,x-1])+f(x,[1,l-1])
if(lwhile(l//l++ -f(x,[x+1,r])=-f(x,[1,r])+f(x,[1,x])
}for(int i=1;i<=n;++i)}}
for(int i=2;i<=m;++i)
for(int i=1;i<=m;++i)
return 0;
}
洛谷P4887 第十四分塊 前體
題目大意 給定乙個長度為 n 的序列 a k 和 m 次詢問。每次詢問給定區間 l,r 求滿足 l leqslant i j leqslant r 且 text text a i oplus a j k 的數對 i,j 的個數。40mb。解題思路 二次離線莫隊lxl黑科技。對於一次詢問 l,r 我們...
洛谷 P4887 模板 莫隊二次離線
原題鏈結 給定乙個長度為 n 的序列和乙個常數 k 每次詢問乙個區間 l,r 內,有多少對 i,j 滿足 l leq i,且 a i oplus a j 的二進位制表示下恰好有 k 位為 1 資料範圍 1 leq n,m leq 10 5,0 leq a i 2 0 leq k leq 14 按照普...
第十章 圍繞p 與 p 的爭論
對於乙個函式 void func void 我們通常可以定義乙個這樣的函式指標指向它 void p void func 通過p呼叫func時,通常有兩種寫法 p 或者 p 圍繞這兩種寫法,當初c89制定的時候曾經有過爭論。p 是一種舊式的規定,舊式規定圓括號左邊必須具有 函式 型別,如果是指向函式的...