BZOJ 3262 陌上花開

2022-08-16 17:09:10 字數 1616 閱讀 9389

time limit: 20 sec  memory limit: 256 mb

submit: 2590  solved: 1159

[submit][status][discuss]

有n朵花,每朵花有三個屬性:花形(s)、顏色(c)、氣味(m),又三個整數表示。現要對每朵花評級,一朵花的級別是它擁有的美麗能超過的花的數量。定義一朵花a比另一朵花b要美麗,當且僅當sa>=sb,ca>=cb,ma>=mb。顯然,兩朵花可能有同樣的屬性。需要統計出評出每個等級的花的數量。

第一行為n,k (1 <= n <= 100,000, 1 <= k <= 200,000 ), 分別表示花的數量和最大屬性值。

以下n行,每行三個整數si, ci, mi (1 <= si, ci, mi <= k),表示第i朵花的屬性

包含n行,分別表示評級為0...n-1的每級花的數量。

10 3

3 3 3

2 3 3

2 3 1

3 1 1

3 1 2

1 3 1

1 1 2

1 2 2

1 3 2

1 2 131

3010

1001

1 <= n <= 100,000, 1 <= k <= 200,000

樹套樹 cdq分治

很裸的cdq分治

對於第一維排序,第二維cdq,第三維樹狀陣列搞掉

#include #define ll long long

using namespace std;

inline int read()

while(isdigit(ch))

return x*f;

}const int maxn=2e6+10;

struct nodee[maxn],q[maxn];

int cc[maxn<<1]={},ans[maxn];

inline int lowbit(int x)

inline void insert(int x,int vv)

}inline int search(int xx)

return ans;

}inline bool mycmp(node x,node y)

e[l2].ine+=search(e[l2].c);

l2++;

}for(int i=l;i<=l1-1;i++)

}int main()

sort(q+1,q+n+1,mycmp);

for(int i=1;i<=n;i++)

}cdq(1,k);

for(int i=1;i<=k;i++)

for(int i=0;i對拍**

#include #define ll long long

using namespace std;

inline int read()

while(isdigit(ch))

return x*f;

}int main()

return 0;

}

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 樹狀陣列 秒掉,...