傳送門
首先按照a
aa排序。在分治的時候就沒有第一維的影響了。
然後分治的時候兩個區間分別按照第二維排序。記左右兩個指標。
右邊指標乙個乙個向右跳,左邊指標移到第二維小等於右邊指標的最大位置。並且在左指標跳的時候把對應的c
cc記入權值樹狀陣列裡面。左指標跳完之後用右邊的c
cc查一查字首和即可。
分治完之後要把影響消掉。
樹狀陣列要開權值大小。
並且要去重。因為相同的之間是相互大於。
#include
#define re register
#define cs const
#define lowbit(x) (x&(-x))
#define mid (l+r>>1)
cs int n=
1e5+
10,k=
2e5+10;
int n,k,tot,tr[k]
,ans[n]
;namespace io
template
<
typename t>
inline t get()
inline
intgi()
}using io::gi;
struct nodea[n]
;inline
bool
comp_all
(cs node &a,cs node &b)
inline
bool
comp_b
(cs node &a,cs node &b)
inline
bool
operator
!=(cs node &a,cs node &b)
inline
void
add(
int x,
int v)
inline
intquery
(int x,
int ret=0)
void
solve
(int l,
int r)
while
(--pl>=l)
add(a[pl]
.c,-a[pl]
.cnt);}
intmain()
BZOJ3262 陌上花開
description 有n朵花,每朵花有三個屬性 花形 s 顏色 c 氣味 m 又三個整數表示。現要對每朵花評級,一朵花的級別是它擁有的美麗能超過的花的數量。定義一朵花a比另一朵花b要美麗,當且僅當sa sb,ca cb,ma mb。顯然,兩朵花可能有同樣的屬性。需要統計出評出每個等級的花的數量。...
BZOJ3262 陌上花開
description 有n朵花,每朵花有三個屬性 花形 s 顏色 c 氣味 m 又三個整數表示。現要對每朵花評級,一朵花的級別是它擁有的美麗能超過的花的數量。定義一朵花a比另一朵花b要美麗,當且僅當sa sb,ca cb,ma mb。顯然,兩朵花可能有同樣的屬性。需要統計出評出每個等級的花的數量。...
BZOJ 3262 陌上花開
話說這是一道許可權題,如果我複製過來,bzoj不會打死我吧?hhh 大意就是給三維空間中的很多點,乙個點p x,y,z 的級別定義為x0 x y0 y z0 z的任意點p0 x0,y0,z0 的數量,求每種級別的點各有多少種。看過一道二維的這樣的題目,當時想的是直接排序然後用bit 樹狀陣列 秒掉,...