BZOJ3262 陌上花開 CDQ分治

2021-07-17 02:26:49 字數 576 閱讀 7059

對第一關鍵字排序,分治每朵花,合併的時候通過歸併左右的花的第二關鍵字,將值插入樹狀陣列中求值。對於相同的花,先進行預處理即可。

#include"bits/stdc++.h"

#define lowbit(x) ((x)&-(x))

using namespace std;

const int n=100005,m=200005;

int n,m;

int sum[m];

inline void add(int x,int op)

inline int qry(int to)

int x[n],y[n],z[n],id[n],ans[n],res[n];

inline bool cmp(const int&a,const int&b)

while(i>l)add(z[id[--i]],-1);

static int ms[n],tmp;tmp=l-1;

for(i=l,j=mid+1;i<=mid||j<=r;){

if(i>mid) ms[++tmp]=id[j++];

else if(j>r||y[id[i]]

BZOJ 3262 陌上花開 CDQ

time limit 20 sec memory limit 256 mb submit 2457 solved 1098 submit status discuss 有n朵花,每朵花有三個屬性 花形 s 顏色 c 氣味 m 又三個整數表示。現要對每朵花評級,一朵花的級別是它擁有的美麗能超過的花的數...

bzoj 3262 陌上花開(cdq分治)

time limit 20 sec memory limit 256 mb submit 1431 solved 644 submit status discuss 有n朵花,每朵花有三個屬性 花形 s 顏色 c 氣味 m 又三個整數表示。現要對每朵花評級,一朵花的級別是它擁有的美麗能超過的花的數量...

BZOJ 3262 陌上花開 CDQ分治

最近又研究了一下cdq分治,發現比樹套樹好寫多了啊。首先cdq分治只能優化掉一維,對於乙個三維問題,cdq分治先二分第一維,然後通過sort第二維後由左到右掃瞄確保第二維的順序,第三維則需要乙個計數的資料結構維護,一般是樹狀陣列或者線段樹,然後就完美地解決掉了問題。而對於cdq遞迴時,可以採用先序遍...