【LGP5437】【XR-2】约定
显然每一条边出现在生成树中的方案数是相等的
根据矩阵树定理,\(n\)个节点的完全图生成树个数是\(n^{n-2}\)种,完全图共有\(\frac{n(n-1)}{2}\)条边,一棵生成树共\(n-1\)条边
于是对于任意一条边,在所有生成树中的总出现次数是
\]
于是每一条边前面多了一个系数,可以理解为每一条边出现的概率
\]
这个东西乘上边权和\(\sum_{i=1}^n\sum_{j=i+1}^n(i+j)^k\)
显然\(i,j\)都从\(1\)开始更好求一些,于是求一下\(\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\),减去\(\sum_{i=1}^n(2i)^k=2^k\sum_{i=1}^ni^k\),再除以\(2\)就是总边权和了
不要在傻乎乎的二项式定理拆里面的东西了,我们直接枚举\(i+j\)的值,显然这玩意长得跟个矩阵是的,每一条对角线上的值都是一样的,还有一些对称的美好性质,于是瞎推一下就有
\]
大力拉格朗日插值就好了
代码
#include<bits/stdc++.h>
#define re register
const int maxn=1e7+5;
const int mod=998244353;
inline int ksm(int a,int b) {
int S=1;
for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) S=1ll*S*a%mod;
return S;
}
int f[maxn],p[maxn>>2],pre[maxn][2],a[maxn],b[maxn],fac[maxn],ifac[maxn];
int n,k,ans1,ans2,ans3,ans4;
inline int qm(int a) {return a<0?a+mod:a;}
inline int calc(int x,int o) {
int N=(o==1?k+2:k+1);
a[0]=b[0]=x;b[N+1]=1;
for(re int i=1;i<=N;i++) a[i]=1ll*a[i-1]*(b[i]=qm(x-i))%mod;
for(re int i=N-1;i>=0;--i) b[i]=1ll*b[i]*b[i+1]%mod;
int tot=0;
for(re int i=1;i<=N;i++) {
int now=1ll*ifac[i]*ifac[N-i]%mod;
if((N-i)&1) now=mod-now;
now=1ll*now*a[i-1]%mod*b[i+1]%mod;
tot=(tot+1ll*now*pre[i][o]%mod)%mod;
}
return tot;
}
int main() {
scanf("%d%d",&n,&k);fac[0]=ifac[0]=1;pre[1][0]=pre[1][1]=1;
for(re int i=2;i<=k+2;i++) {
if(!f[i]) p[++p[0]]=i,pre[i][0]=ksm(i,k),pre[i][1]=ksm(i,k+1);
for(re int j=1;j<=p[0]&&p[j]*i<=k+2;++j) {
pre[p[j]*i][0]=1ll*pre[p[j]][0]*pre[i][0]%mod;
pre[p[j]*i][1]=1ll*pre[p[j]][1]*pre[i][1]%mod;
f[p[j]*i]=1;if(i%p[j]==0) break;
}
}
for(re int i=1;i<=k+2;i++) fac[i]=1ll*fac[i-1]*i%mod;
ifac[k+2]=ksm(fac[k+2],mod-2);
for(re int i=k+1;i;--i) ifac[i]=1ll*ifac[i+1]*(i+1)%mod;
for(re int i=1;i<=k+1;++i) pre[i][0]=(pre[i-1][0]+pre[i][0])%mod;
for(re int i=1;i<=k+2;++i) pre[i][1]=(pre[i-1][1]+pre[i][1])%mod;
ans1=calc(n+1,1);ans2=calc(2*n,1)-ans1;
ans3=calc(n+1,0),ans4=calc(2*n,0)-ans3;
ans2=(ans2+mod)%mod,ans4=(ans4+mod)%mod;
ans4=1ll*ans4*(2*n+1)%mod;
int ans=(ans1+ans4)%mod-(ans2+ans3)%mod;
ans=(ans+mod)%mod;
ans=(ans-1ll*ksm(2,k)*calc(n,0)%mod+mod)%mod;
printf("%d\n",1ll*ans*ksm(n,mod-2)%mod);
return 0;
}
【LGP5437】【XR-2】约定的更多相关文章
- [译]C#编码约定
原文:https://msdn.microsoft.com/en-us/library/ff926074.aspx 编码约定的目的是: 创建统一格式的代码,让读者的注意力更集中在内容上面,而不是结构 ...
- Entity Framework Code First属性映射约定
Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...
- Entity Framework Code First关系映射约定
本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...
- 3.Code-First 约定(EF Code-First系列)
前面,我们已经了解了Code-First利用领域类,怎么为我们创建数据库的简单示例.现在我们来学习一下Code-First约定吧. 什么是约定 约定说白了,就是基于一套规矩办事,这里就是基于你定义好的 ...
- UDS(ISO14229-2006) 汉译(No.5 公共约定)
ISO 14229遵循OSI Service Conventions(ISO 10731)(OSI服务公约)所述,并应用于诊断服务.这些约定指定相互作用与服务消费者和服务提供者.通过服务原语,信息数据 ...
- Startup配置类 居然又是约定
Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...
- XD, XR, DR 股票
股权登记日与除权除息日 所以,如果投资者想得到一家上市公司的分红.配股权,就必须弄清这家公司的股权登记日在哪一天,否则就会失去分红.配股的机会. 股权登记日后的第一天就是除权日或除息日,这一天或以后购 ...
- 单元测试 逃不开的Done 与约定
关注单元测试有一段时间了,也做了些尝试然后就停了下来,寻找框架.方法.各种尝试 看得多,尝试的少, 关于框架分为两类,1是自动化测试工具类,1是js单元测试框架 关于自动化测试工具我尝试了http:/ ...
- ORM系列之二:EF(4) 约定、注释、Fluent API
目录 1.前言 2.约定 2.1 主键约定 2.2 关系约定 2.3 复杂类型约定 3.数据注释 3.1 主键 3.2 必需 3.3 MaxLength和MinLength 3.4 NotMapped ...
随机推荐
- sublime快捷键汇总
Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所 ...
- Download QT
http://download.qt.io/archive/qt/
- Zookeeper的单机&集群环境搭建
单机环境的安装 首先下载ZK的二进制安装包:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/ 将安装包上传到Linux上: 进行解 ...
- 官网下载 Linux 上需要的 MySQL的步骤
1.输入MySQL 官网地址 https://dev.mysql.com/ 选择 download ->Community->MySQL Community Server 点击 MyS ...
- 2019.7.3模拟 光影交错(穷举+概率dp)
题目大意: 每一轮有pl的概率得到正面的牌,pd的概率得到负面的牌,1-pl-pd的概率得到无属性牌. 每一轮过后,都有p的概率结束游戏,1-p的概率开始下一轮. 问期望有多少轮后正面的牌数严格大于负 ...
- 【Codeforces 1185C2】Exam in BerSU (hard version)
[链接] 我是链接,点我呀:) [题意] 要让前i个数字的和小于等于M. 问你最少要删掉前i-1个数字中的多少个数字,每个询问都是独立的. [题解] ti的范围很小. 所以N*MAX(TI)暴力枚举就 ...
- 硬核二分——cf985D
分两种情况进行讨论,要注意判条件时会有爆ll #include<bits/stdc++.h> using namespace std; #define ll long long ll n, ...
- 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)
0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...
- Keystone controller.py & routers.py代码解析
目录 目录 Keystone WSGI 实现 controllerspy routerspy 参考文档 Keystone WSGI 实现 Keystone 项目把每个功能都分到单独的目录下,EXAMP ...
- 文本数据和mysql 里面的数据比较
实现读取TXT文件中的内容然后存到内存,然后将内存中的数据和mysql 数据库里面某张表数据的字段做一个比较,如果比较内存中的数据在mysql 里存在则不做处理,如果不存在则将该数据插入mysql数据 ...