题目大意

​  给你\(n,p\),求\(n\)个点组成的所有无向连通图的边数的平方和模\(p\)

​  \(n\leq 2000,p\leq {10}^9\)

题解

​  设\(m=\frac{n(n-1)}{2},h0_n=n\)个点无向图的个数,\(h1_n=n\)个点组成的所有无向图的边数之和,\(h2_n=n\)个点组成的所有无向图的边数的平方和,\(f0_n=n\)个点无向连通图的个数,\(f1_n=n\)个点组成的所有无向连通图的边数之和,\(f2_n=n\)个点组成的所有无向连通图的边数的平方和

  每条边可以选或不选,所以

\[h0_n=2^m
\]

  因为每条边会被选中\(2^{m-1}\)次,所以

\[h1_n=m2^{m-1}
\]

  因为选\(i\)条边有\(\binom{m}{i}\)种方法,所以

\[h2_n=\sum_{i=0}^mi^2(^m_{~i})
\]

  但是这个式子没法快速算出来。我们换一种思路。

​  我们枚举点\(1\)连出去的边的条数\(i\),根据\({(x+\sum y)}^2=x^2\sum1+2x\sum y+\sum y^2\),可得

\[h2_n=\sum_{i=0}^{n-1}\binom{n-1}{i}(h2_{n-1}+2ih1_{n-1}+i^2h0_{n-1})
\]

​  我们枚举与点\(1\)在同一个联通分量里的点的个数,计算联通分量数\(\geq2\)的答案,然后用总的答案去减

\[f0_n=h0_n-\sum_{i=1}^{n-1}\binom{n-1}{i-1}f0_ih0_{n-i}
\]

\[f1_n=h1_n-\sum_{i=1}^{n-1}\binom{n-1}{i-1}(f0_ih1_{n-i}+f1_ih0_{n-i})
\]

\[f2_n=h2_n-\sum_{i=1}^{n-1}\binom{n-1}{i-1}(f0_ih2_{n-i}+2f1_ih1_{n-i}+f2_ih0_{n-i})
\]

​  时间复杂度:\(O(n^2)\)

代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<utility>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
ll p;
ll fp(ll a,ll b)
{
ll s=1;
while(b)
{
if(b&1)
s=s*a%p;
a=a*a%p;
b>>=1;
}
return s;
}
ll c[2010][2010];
ll f0[2010],f1[2010],f2[2010];
ll h0[2010],h1[2010],h2[2010];
int main()
{
// freopen("road.in","r",stdin);
int n;
scanf("%d%lld",&n,&p);
int i,j;
c[0][0]=1;
for(i=1;i<=n;i++)
{
c[i][0]=1;
for(j=1;j<=i;j++)
c[i][j]=(c[i-1][j]+c[i-1][j-1])%p;
}
h0[1]=1;
h1[1]=h2[1]=0;
for(i=2;i<=n;i++)
{
int m=i*(i-1)/2;
h0[i]=fp(2,m);
h1[i]=m*fp(2,m-1)%p;
h2[i]=0;
for(j=0;j<=i-1;j++)
h2[i]=(h2[i]+c[i-1][j]*((h2[i-1]+2*j%p*h1[i-1]%p+j*j%p*h0[i-1]%p)%p)%p)%p;
}
f0[0]=f0[1]=1;
for(i=2;i<=n;i++)
{
f0[i]=h0[i];
f1[i]=h1[i];
f2[i]=h2[i];
for(j=1;j<=i-1;j++)
{
f0[i]=(f0[i]-c[i-1][j-1]*f0[j]%p*h0[i-j]%p)%p;
f1[i]=(f1[i]-c[i-1][j-1]*((f0[j]*h1[i-j]%p+f1[j]*h0[i-j]%p)%p)%p)%p;
f2[i]=(f2[i]-c[i-1][j-1]*((f0[j]*h2[i-j]%p+2*f1[j]*h1[i-j]%p+f2[j]*h0[i-j]%p)%p)%p)%p;
}
}
ll ans=(f2[n]%p+p)%p;
printf("%lld\n",ans);
return 0;
}

【XSY1538】连在一起的幻想乡 数学 无向连通图计数的更多相关文章

  1. 【XSY1537】五颜六色的幻想乡 数学 生成树计数 拉格朗日插值

    题目大意 ​ 有一个\(n\)个点\(m\)条边的图,每条边有一种颜色\(c_i\in\{1,2,3\}\),求所有的包括\(i\)条颜色为\(1\)的边,\(j\)条颜色为\(2\)的边,\(k\) ...

  2. BZOJ4596: [Shoi2016]黑暗前的幻想乡

    Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪 ...

  3. BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1017  Solved: 599[Submit][S ...

  4. BZOJ3925: [Zjoi2015]地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  5. hiho#1145 : 幻想乡的日常

    描述 幻想乡一共有n处居所,编号从1到n.这些居所被n-1条边连起来,形成了一个树形的结构. 每处居所都居住着一个小精灵.每天小精灵们都会选出一个区间[l,r],居所编号在这个区间内的小精灵一起来完成 ...

  6. BZOJ3924 [Zjoi2015]幻想乡战略游戏

    Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...

  7. bzoj3926: [Zjoi2015]诸神眷顾的幻想乡 对[广义后缀自动机]的一些理解

    先说一下对后缀自动机的理解,主要是对构造过程的理解. 构造中,我们已经得到了前L个字符的后缀自动机,现在我们要得到L+1个字符的后缀自动机,什么需要改变呢? 首先,子串$[0,L+1)$对应的状态不存 ...

  8. 【BZOJ 3926】 [Zjoi2015]诸神眷顾的幻想乡 (广义SAM)

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 974  Solved: 573 Descriptio ...

  9. 字符串(广义后缀自动机):BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 843  Solved: 510[Submit][St ...

随机推荐

  1. Beta阶段团队成员贡献分分配规则

    Beta阶段团队成员贡献分分配规则 Alpha阶段贡献分分配有些负责,在这里进行一些修改: 对任务完成得分部分进行了简化 对发现bug的惩罚措施进行了修改 移除了优化得分,不鼓励修改他人代码 移除了帮 ...

  2. 软件工程(FZU2015) 赛季得分榜,第9回合

    SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...

  3. PyCharm3.0默认快捷键

    PyCharm3.0默认快捷键(翻译的) 1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性) Ctrl + Alt + Space 快速导入任意类 Ctrl + S ...

  4. React Native之本地文件系统访问组件react-native-fs的介绍与使用

    React Native之本地文件系统访问组件react-native-fs的介绍与使用 一,需求分析 1,需要将图片保存到本地相册: 2,需要创建文件,并对其进行读写 删除操作. 二,简单介绍 re ...

  5. [转帖]Gartner预测:2019年全球公有云规模达2143亿美元

    Gartner预测:2019年全球公有云规模达2143亿美元 https://news.cnblogs.com/n/623341/ 近日,全球领先的信息技术研究和顾问公司 Gartner 发布的最新数 ...

  6. SQL Server 2014备份维护计划

    1.      数据库 -> [管理]-> [维护计划]  -> [新建维护计划](如果没有操作过可以,选择“维护计划向导”): 2.      直接点击下一步,然后填写计划名称.说 ...

  7. node 模块化思想中index.js的重要性

    目录结构如上图 module1和modlue2.main在同一级 module1下文件: index.js var test2=require('./test2'); var sayHi=functi ...

  8. 转《在浏览器中使用tensorflow.js进行人脸识别的JavaScript API》

    作者 | Vincent Mühle 编译 | 姗姗 出品 | 人工智能头条(公众号ID:AI_Thinker) [导读]随着深度学习方法的应用,浏览器调用人脸识别技术已经得到了更广泛的应用与提升.在 ...

  9. Codeforces 1154F Shovels Shop

    题目链接:http://codeforces.com/problemset/problem/1154/F 题目大意: 商店有n把铲子,欲购k把,现有m种优惠,每种优惠可使用多次,每种优惠(x, y)表 ...

  10. RabbitMQ基本操作

    更加详细的 链接https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(A ...