cdq分治不但能解決三維偏序問題,還能將某些問題的動態版本變成靜態。
比如這題是單點修改,區間查詢,這樣我們就可以將輸入的順序當作時間軸,之後進行cdq分治
按x軸排序後,對y進行樹狀陣列加減,這道題就變成了x比他小,並且y也比他小的個數查詢
這題還用到了簡單的容斥原理,也就是二維字首和的思想來求取矩形真正的內容
#include#includeview code#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=2e6+10
;const
int mod=1e9+7
;struct
nodeq[n];
ll tr[n],ans[n];
int lowbit(int
x)void add(int x,intc)}
ll sum(
intx)
return
res;
}bool
cmpb(node a,node b)
void cdq(int l,int
r)
for(i=l;i<=r;i++)
}int
main();
}if(n==2
); ++cnt;
q[cnt]=node;
++cnt;
q[cnt]=node;
++cnt;
q[cnt]=node;}}
cdq(
1,cnt);
for(int i=1;i<=idx;i++)
}
AcWing 26 二進位制中1的個數
輸入乙個32位整數,輸出該數二進位制表示中1的個數。注意 樣例1輸入 9 輸出 2 解釋 9的二進位制表示是1001,一共有2個1。樣例2 輸入 2 輸出 31 解釋 2在計算機裡會被表示成11111111111111111111111111111110,一共有31個1。這道題有個難點是如何處理負數...
Acwing演算法基礎 2 6 差分
原文 原文連線 類似於數學中的求導和積分,差分可以看成字首和的逆運算。差分陣列 首先給定乙個原陣列a a 1 a 2 a 3 a n 然後我們構造乙個陣列b b 1 b 2 b 3 b i 使得 a i b 1 b 2 b 3 b i 也就是說,a陣列是b陣列的字首和陣列,反過來我們把b陣列叫做a陣...
AcWing寒假每日一題 Day26ISBN號碼
每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如 x xx x 其中符號 是分隔符 鍵盤上的減號 最後一位是識別碼,例如0 670 82162 4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0代表英語 第乙個分隔...