這道題目一眼就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。具體做法就是每個點都附上乙個初值,然後把每個點所連的點的值 合 起來,然後就可以判斷相連的點是否一樣了 不包括自己 如果要讓自己也在的話,再 合 上自己就好了。關於怎麼 合 有多種方法,感覺一般採用二進位制運算,因為不用考慮順序呀。好像異或的正確率比較...