博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj4264: 小C找朋友
阅读量:4550 次
发布时间:2019-06-08

本文共 1213 字,大约阅读时间需要 4 分钟。

hash大法好

#include 
#include
#include
#include
#include
#include
#include
#define ll long long#define N 1000006#define M 2000006using namespace std;using std::vector;inline int read(){ int ret=0;char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while ('0'<=ch&&ch<='9'){ ret=ret*10-48+ch; ch=getchar(); } return ret;}vector
e[N];int n,m;struct Hash{ int k,P; int hash[N]; Hash(){} void load(){ memset(hash,0,sizeof(hash)); for (int i=1;i<=n;++i) for (int j=0;j
a[N];ll ans;void renew_ans(){ for (int i=1;i<=n;++i) a[i]=make_pair(h0.hash[i],h1.hash[i]); sort(a+1,a+n+1); int cnt=0; for (int i=1;i<=n;++i){ ++cnt; if (i==n||a[i]!=a[i+1]){ ans+=(ll)cnt*(cnt-1)/2; cnt=0; } }}int main(){ h0.k=23;h0.P=2333333; h1.k=233;h1.P=1000000007; n=read();m=read(); for (int i=1;i<=m;++i){ int u=read(),v=read(); e[u].push_back(v); e[v].push_back(u); } ans=0; for (int k=0;k<2;++k){ for (int i=1;i<=n;++i) sort(e[i].begin(),e[i].end()); h0.load();h1.load(); renew_ans(); for (int i=1;i<=n;++i) e[i].push_back(i); } printf("%lld\n",ans); return 0;}

  

转载于:https://www.cnblogs.com/wangyurzee7/p/5181774.html

你可能感兴趣的文章
UVa-1368-DNA序列
查看>>
ConfigParser模块
查看>>
如何开发优质的 Flutter App:Flutter App 软件测试指南
查看>>
决胜Flutter 第一章 熟悉战场
查看>>
如何开发优质的 Flutter App:Flutter App 软件调试指南
查看>>
决胜经典算法之冒泡排序
查看>>
决胜经典算法之选择排序
查看>>
单元格数据类型
查看>>
mysql表设计---时间类型
查看>>
wamp服务器
查看>>
Codeforces 1144G Two Merged Sequences dp
查看>>
STL内存分配方式
查看>>
NS2移动节点
查看>>
python学习之路(十一)
查看>>
CSS让浮动元素水平居中
查看>>
-----------------时间线分水岭--------------------------
查看>>
Stsadm.exe 怎么用?
查看>>
使用spring中4.2.6版本使用@Value取值失败,结果为${xxx}的情况
查看>>
LOJ6583 ICPC World Finals 2019何以伊名始(广义后缀自动机)
查看>>
lightoj 1031【区间DP,未完待续】
查看>>