stars-poj 2352
求解沒有重複項的包含子集的個數。
我們直接求其貢獻,對於一維偏序x座標進行公升序排序,對於二維偏序y座標進行分治,我們從遞迴至底層,然後向上更新,對於左右子樹,左子樹的x一定是小於右子樹的任意乙個點的x座標,所以我們求對右子樹的貢獻的時候,可以直接比較y座標的大小。
並且,對於已經處理完的左右區間,y是單調的。
#include #include #include #include #include #include #include #include #include #include #include #include #define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define inf 0x3f3f3f3f
#define half (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define lson lsn, l, mid
#define rson rsn, mid+1, r
#define ql lson, ql, qr
#define qr rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef unsigned int uit;
typedef long long ll;
const int maxn = 15007;
int n, m, level[maxn] = , ans[maxn];
struct node
friend bool operator < (node e1, node e2)
}q[maxn], cop[maxn];
void cdq(int l, int r)
}for(int i=l; i<=r; i++) q[i] = cop[i];
}int main()
sort(q + 1, q + n + 1);
cdq(1, n);
for(int i=1; i<=n; i++) ans[level[i]]++;
for(int i=0; ireturn 0;
}
陌上花開(三維偏序)(cdq分治)
其實就是三位偏序的模板,cdq分治入門題。學習cdq分治請看 stdcall大佬的部落格 傳送門 排序來維護第一層,cdq維護一層,樹狀陣列維護一層,然後就沒有啦qwqwq include include include include include define maxn 100010 usin...
二維偏序問題
想學cdq分治,然而cdq的經典題目是三維偏序問題,是建立在二維偏序問題的基礎上的。我這只蒟蒻連個二維偏序問題都沒做過。在網上找了一大圈,才勉強找到乙個二維偏序的題目。bzoj的許可權啊。是時候買個許可權號了。題目鏈結 這個牛客網也不知道是什麼鬼。給你n個物品,每個物品有兩個參量,分別為 s,w 讓...
Laptop 二維偏序
fst是一名可憐的小朋友,他很強,但是經常fst,所以rating一直低迷。但是重點在於,他非常適合acm!並在最近的區域賽中獲得了不錯的成績。拿到獎金後fst決定買一台新筆記本,但是fst發現,在 能承受的範圍內,筆記本的記憶體和速度是不可兼得的。可是,有一些筆記本是被另外一些 完虐 的,也就是記...