北大資訊學夏令營模擬2019 5 21 神犇

2021-09-23 08:11:07 字數 2653 閱讀 6668

時限:2s

空限:256mb

這題非常容易想到先做個字首和

(a,b,c)分別表示三個人的粉絲數

不妨變成(a-b,a-c,b-c)

這樣相當於要從前面的字首中選個三維都不一樣的,使異或和最大。

那麼這個可以暴力容斥地建出八種trie(每一維選和不選),然後自高位到低位的貪心,有的話走過去即可。

注意如果有兩維相同第三維也一定相同,所以優化到5種trie

複雜度o(n

log∣

v∣∗5

)o(nlog|v|*5)

o(nlog

∣v∣∗

5),可惜trie的空間有點大,不行

勞動人民的智慧型是無窮的,我們開發trie上動態縮邊技巧,反正最後縮出來的點數就是虛樹的點數,上限是2n,有一點難打,可以看**。

題解利用到了幾個性質:

1是之前說到的要麼一維相同要麼三維相同。

2是我們只要判定是否存在而不用求個數。

於是我們先隨便記乙個(a,b,c)

假設來了(x,y,z)

若完全相等,則記是否存在三維與(a,b,c)不同的即可。

考慮有一維相同,假設就是a=x

記乙個(a』,b』,c』)滿足a』不等於a

再比較,若此時還有一維相同假設b』=y

再記(a』』,b』』,c』』)滿足a』『≠a,b』『≠b』

若還不滿足,再記(a』』』,b』』』,c』』』)滿足a』』『≠a,b』』『≠b』,c』』『≠c』』

其實就是幾個二進位制狀態表示這些數是否存在,似乎有點煩。

我的**是優化trie的:

#include

#define fo(i, x, y) for(int i = x, b = y; i <= b; i ++)

#define ff(i, x, y) for(int i = x, b = y; i < b; i ++)

#define fd(i, x, y) for(int i = x, b = y; i >= b; i --)

#define db double

#define ll long long

#define pp printf

using namespace std;

const

int n =

3e5+5;

int n, opt;

int a[n]

, b[n]

;int ans[n]

;const

int m =

3e6;

int son[m][2

], tot, siz[m]

, len[m]

, t[m]

;map

int> rt[5]

;const

int c =

200005

;ll z2

(ll x, ll y)

int s[n][3

];int f[5]

=;int mk;

int w;

intfz

(int x)

void

split

(int x,

int c,

int l)

#define qw(x, y) ((x) >> (y) & 1)

voiddd(

int&rt)

if(l >0)

}voidad(

int i)

struct wz w[5]

;int

nsiz

(wz w,

int c)

void

move

(wz &w,

int c)

}int

main()

b[i]

^= b[i -1]

;fo(j,0,2

) s[i]

[j]= s[i -1]

[j];

if(a[i]==0

)if(a[i]==1

)if(a[i]==2

) w[0]

.x = rt[0]

[0];

w[1]

.x = rt[1]

[s[i][0

]]; w[2]

.x = rt[2]

[s[i][1

]]; w[3]

.x = rt[3]

[s[i][2

]]; w[4]

.x = rt[4]

[z2(s[i][0

], s[i][1

])];

fo(j,0,

4) w[j]

.l =0;

fd(j,29,

0)if(s)

else

} w = b[i];ad

(i);}fo

(i,1

, n)pp(

"%d "

, ans[i]);

}

2020山東資訊學夏令營遊記

中午在學校集合,和勝利一中的大佬一起乘車去日照的山東外國語職業技術大學。下午到了大學,天空靜靜地下著濛濛的雨,打傘似乎又有些多餘,帶上帽子已足夠。在門口等著車一趟一趟接送到宿舍門口,過了體溫檢查正準備上車,才發現車已經坐滿,便在檢測口後面多等了一趟車。來到宿舍樓下門口,又等教練拿來飯卡,大概等了30...

總結 2019中山紀中資訊學夏令營 8 2

今天又是模擬賽的一天 總分 100 20 0 20 140 排名 99 157 t1佳餚,看了看n 10,萌生了 的想法,想都沒想直接寫了乙個超長的水 後來測試竟然真的ac太n了 很佩服我初生牛犢不怕虎的毅力orz 後來想著要是不行咋辦,所以又寫了乙個正常人的遞迴,也可以a t2取數遊戲,一開始硬沒...

總結 2019中山紀中資訊學夏令營 8 13

相比昨天今天的題異常愉悅 賽時 t1 是簽到題嗎?小r排名倒數第k,那麼他就排名正數第n k 1,將n個學生的成績從小到大排個序,再將小於等於小r 除了他自己 的成績輸出 難道會有坑?貌似沒有 祈求沒有吧 t2 字串比較的話,我只會雜湊和kmp,雜湊走起 將字串雜湊後,比較1i和n i 1n的雜湊是...