2017湖南集訓7 9 大佬的問題 (數點問題)

2021-08-03 14:38:17 字數 981 閱讀 2358

題目大意:給出三個排列a,b,c,問同時滿足ax < ay,bx < by,cx < cy的數對有多少。

o(n log^2 n)的做法:經典的三維數點問題,排序一維,cdq分治一維,樹狀陣列一維。

o(n log n)的做法:因為均為排列,所以沒有相同的元素,設s(x,y)=[ax < ay]+[bx < by]+[cx < cy]。顯然max(s(x,y),s(y,x))的取值只有2或3,假設取值為2的有p種,為3的有q種,p+q=n*(n-1)/2。設p(a,b)=只考慮a,b兩個排列的答案,3 *p+q=p(a,b)+p(b,c)+p(a,c)。二維數點求出p即可。

**:

#include

#include

#include

#include

#define ll long long

using

namespace

std;

ll seed,ans=0;

int n,t[2000100];

struct node

p[2000100];

ll rand()

inline

bool cmpa(node x,node y)

void add(int x)

}int query(int x)

return re;

}int main()

memset(t,0,sizeof(t));

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

sort(p+1,p+n+1,cmpb);

memset(t,0,sizeof(t));

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

printf("%lld\n",(ans-(ll)n*(n-1)/2)/2);

}/*4

201334450

1474105774

350932494

*/

清華集訓2017模擬12 10 大佬的難題

1 n 2e6,時限 2.5s 容斥原理瞎搞。設a,b,c分別為滿足三個條件的集合。根據容斥原理,有 a b c a b c a b a c b c a b c 而a b c同時會等同於總數n n 1 都大於的個數 即都小於的個數a b c 所以 n n 1 a b c a b c a b a c ...

2017湖南集訓7 9 營養餐 階梯博弈

設num i 表示點i還能取走多少個水果,num i a i sigma a son b son 可以發現點i拿走k個後,num i k,num fa i k b i 於是就能想到階梯博弈了,先把b i 0的點與fa i 的邊斷掉,因為取了i點的水果對fa i 是沒有影響的,剩下的森林裡,sg函式值...

一位大佬的前端面試分享

博主就讀於電子科技大學,大三狗一枚!面試是個漫長的過程,從海投到收穫 面試,一面 二面 三面,乙個步驟出錯那麼後面就宣告終結。同時,面試過程中你也可能會遇到一些面試官的刁難,甚至部分面試官會說些比較打擊你的話,但是大部分面試官都是很棒的!必須有牢固的基礎知識,足夠豐富的專案經歷 就我而言差不多是三個...