bzoj4264】的更多相关文章

题解 $a$和$b$是好*友说明除了这两个人以外的邻接集合相同: 做两次$hash$,分别都处理和$a$相邻的点排序$hash$,①$a$要算进$a$的相邻集合,②$a$不算进: 当两个人不是好*友,一定不会统计,当是且两个人不相邻,会仅被②统计,当是且相邻会仅被①统计: 枚举所有的$hash$值统计答案: %了$Claris$后学会了对每个点随机生成一个较大值,异或起来$hash$的方法 这样用于集合$hash$不用排序,并且删除一个元素直接异或即可 #include<cstdio> #in…
[BZOJ4264]小C找朋友 Description 幼儿园里有N个小C,两个小C之间可能是朋友也可能不是.所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边. 园长ATM发现对于两个(不同的)小Ci和j,如果其他的所有小C要么同时是i,j的朋友,要么同时不是i,j朋友的话,这两个小C就很有可能一起去吃饭,成为一对好*友.出于一些未知的原因,ATM需要你帮他求出可能成为好*友的小C的对数. Input 第一行一个数N,M,如题目描述. 接下来M行,每行2个数表示一条无向边. Outp…
hash大法好 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> #include <vector> #define ll long long #define N 1000006 #define M 2000006 using namespace…
权限题 就是一个集合\(hash\) 集合\(hash\)可以用于判断两个集合是否相等,具体做法就是给每个随机一个值,之后异或起来就是可以了 这个题就是这样,处理出每个点直接相连的点集的\(hash\)值,之后判断一下有多少对\(hash\)值相等就好了 在考虑一下每条边就做完了 代码 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<c…
题目: Description 幼儿园里有N个小C,两个小C之间可能是朋友也可能不是.所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边. 园长ATM发现对于两个(不同的)小Ci和j,如果其他的所有小C要么同时是i,j的朋友,要么同时不是i,j朋友的话,这两个小C就很有可能一起去吃饭,成为一对好*友.出于一些未知的原因,ATM需要你帮他求出可能成为好*友的小C的对数. Input 第一行一个数N,M,如题目描述. 接下来M行,每行2个数表示一条无向边. Output 输出可能成为好*友…
哈希 cf原题...没见过的话真想不出来 将邻接表排序哈希,判断是否相同,但是会漏掉两点相邻的情况,于是再把自己加入自己的邻接表,然后再哈希判断. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; vector<int> G[N]; int n, m; ll ans; map<ll, ll> mp; int main() { scanf("%d%d", &…