怎麼說呢,這應該算是一種新知識吧,圖上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...