4264 小C找朋友 hash

2021-08-31 07:34:51 字數 1048 閱讀 2035

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

#include

using

namespace std;

#define ll long long

#define pa pair

const

int maxn=

1000010

;const

int inf=

2147483647

;int

read()

while

(ch>=

'0'&&ch<=

'9')x=

(x<<3)

+(x<<1)

+(ch^48)

,ch=

getchar()

;return x*f;

}map<

int,

bool

>mp[maxn]

;int n,m;

ll v[maxn]

,a[maxn]

;struct edge

}e[maxn]

;int len=0;

intmain()

} ll ans=0;

for(

int i=

1;i<=len;i++

)sort

(a+1

,a+1

+n);

ll last=a[1]

,t=1

;for

(int i=

2;i<=n;i++)if

(a[i]

==last)t++

;else

ans+

=t*(t-1)

/2ll

;printf

("%lld"

,ans)

;}

4264 小C找朋友(hash)

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

BZOJ4264 小C找朋友

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

bzoj4264 小C找朋友

怎麼說呢,這應該算是一種新知識吧,圖上hash。具體做法就是每個點都附上乙個初值,然後把每個點所連的點的值 合 起來,然後就可以判斷相連的點是否一樣了 不包括自己 如果要讓自己也在的話,再 合 上自己就好了。關於怎麼 合 有多種方法,感覺一般採用二進位制運算,因為不用考慮順序呀。好像異或的正確率比較...