bzoj4264 小C找朋友

2021-08-09 23:50:51 字數 997 閱讀 9747

怎麼說呢,這應該算是一種新知識吧,圖上hash。

具體做法就是每個點都附上乙個初值,然後把每個點所連的點的值「合」起來,然後就可以判斷相連的點是否一樣了(不包括自己),如果要讓自己也在的話,再「合」上自己就好了。

關於怎麼「合」,有多種方法,感覺一般採用二進位制運算,因為不用考慮順序呀。好像異或的正確率比較高呀。

#include

#define n 1000000

using

namespace

std;

int n,m,x,y,cnt;

unsigned

long

long val[n+5];

unsigned

long

long h[n+5],a[n+5];

long

long ans;

inline

char nc()

inline

int read()

int main()

memcpy(a,h,sizeof(h));

sort(a+1,a+n+1);cnt=1;

for(int i=2;i<=n;i++)if(a[i]==a[i-1])cnt++;else ans+=(long

long)cnt*(cnt-1)/2,cnt=1;

ans+=(long

long)cnt*(cnt-1)/2;

for(int i=1;i<=n;i++)h[i]^=val[i];

memcpy(a,h,sizeof(h));

sort(a+1,a+n+1);cnt=1;

for(int i=2;i<=n;i++)if(a[i]==a[i-1])cnt++;else ans+=(long

long)cnt*(cnt-1)/2,cnt=1;

ans+=(long

long)cnt*(cnt-1)/2;

cout

0;}

BZOJ4264 小C找朋友

description 幼兒園裡有n個小c,兩個小c之間可能是朋友也可能不是。所有小c之間的朋友關係構成了乙個無向圖,這個無向圖中有m條邊。園長atm發現對於兩個 不同的 小ci和j,如果其他的所有小c要麼同時是i,j的朋友,要麼同時不是i,j朋友的話,這兩個小c就很有可能一起去吃飯,成為一對好友。...

4264 小C找朋友(hash)

幼兒園裡有 n n 個小c role presentation style position relative c c,兩個小 c c 之間可能是朋友也可能不是。所有小 c role presentation style position relative c c之間的朋友關係構成了乙個無向圖,這個...

4264 小C找朋友 hash

這道題目一眼就hash啊 但是我還是沒做出來,因為我的hash方法太過 了,直接用乙個二進位制表示每個人的朋友集合 正解的hash方法其實也接觸過,但是我沒用過太多,記錄一下 給每個人隨機乙個很大的權值,乙個人朋友集合的表示方法就是把它的朋友的權值異或起來。include using namespa...