呃怎么感觉很裸啊(

题意是让求生成树边权之和的期望,那么我们只需要算出所有生成树的边权之和除以生成树边数即可。

由于是求和,我们只需要计算出每条边对答案的贡献即可。

我们知道一个完全图有 \(n^{n-2}\) 棵生成树,那么每条边在其中出现过多少次呢?

很容易发现每一条边的地位是相同的,所以所有边出现的次数相同。

那么出现次数就是 $n^{n-2}\times (n-1) \div \frac {n \times (n-1)} 2 $,也就是 $ 2n^{n-3}$。

答案就是 \(\frac {2n^{n-3} \times (\sum_{i=1}^n\sum_{j=i+1}^n (i+j)^k)} {n^{n-2}}\)。

\[\frac 2 n \times (\sum_{i=1}^n\sum_{j=i+1}^n (i+j)^k)
\]

里面的东西给转化一下:

\[\frac 1 2 \times (\sum_{i=1}^n\sum_{j=1}^n (i+j)^k - 2^k\sum_{i=1}^n i^k)
\]

我们枚举每一个 \((i+j)\) 的出现次数:

\[\sum_{i=1}^n (i-1)i^k + \sum_{i=n+1}^{2n} (2n+1-i)i^k - 2^k\sum_{i=1}^n i^k
\]
\[\sum_{i=1}^n i^{k+1}-\sum_{i=1}^n i^k + (2n+1)\sum_{i=n+1}^{2n} i^k - \sum_{i=n+1}^{2n} i^{k+1} - 2^k\sum_{i=1}^n i^k
\]

我们只需要知道自然数的 \(k\) 次和 \(k+1\) 次幂之和即可,使用拉格朗日插值可以做到 \(O(k)\)。

#include<cstdio>
const int M=1e7+5,mod=998244353;
int n,k,sl[M],sr[M],a1[M],a2[M],idk[M],idk1[M],ifac[M];
int top,pri[664580];bool zhi[M];
inline int Add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;
}
inline int Del(const int&a,const int&b){
return b>a?a-b+mod:a-b;
}
inline int pow(int a,int b){
int ans=1;
for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;
return ans;
}
inline void sieve(const int&n){
register int i,j,x;idk[1]=idk1[1]=1;
for(i=2;i<=n;++i){
if(!zhi[i])idk[pri[++top]=i]=pow(i,k);
for(j=1;j<=top&&(x=i*pri[j])<=n;++j){
zhi[x]=true;idk[x]=1ll*idk[i]*idk[pri[j]]%mod;
if(!(i%pri[j]))break;
}
idk1[i]=1ll*idk[i]*i%mod;
}
}
inline void init(){
register int i;sieve(k+3);ifac[0]=ifac[1]=1;k+=2;
for(i=2;i<=k+1;++i)ifac[i]=1ll*(mod-mod/i)*ifac[mod%i]%mod;
for(i=2;i<=k+1;++i)ifac[i]=1ll*ifac[i-1]*ifac[i]%mod;
for(i=1;i<=k;++i)idk[i]=Add(idk[i],idk[i-1]);
for(i=1;i<=k+1;++i)idk1[i]=Add(idk1[i],idk1[i-1]);
for(i=1;i<=k;++i){
idk[i]=1ll*ifac[i-1]*(k-i&1?mod-ifac[k-i]:ifac[k-i])%mod*idk[i]%mod;
}
for(i=1;i<=k+1;++i){
idk1[i]=1ll*ifac[i-1]*(k-i&1?ifac[k+1-i]:mod-ifac[k+1-i])%mod*idk1[i]%mod;
}
}
inline int fk(const int&n){
register int i,ans=0;sl[0]=sr[k+1]=1;
for(i=1;i<=k;++i)sl[i]=1ll*sl[i-1]*Del(n,i)%mod;
for(i=k;i>=1;--i)sr[i]=1ll*sr[i+1]*Del(n,i)%mod;
for(i=1;i<=k;++i)ans=Add(ans,1ll*sl[i-1]*sr[i+1]%mod*idk[i]%mod);
return ans;
}
inline int fk1(const int&n){
register int i,ans=0;sl[0]=sr[k+2]=1;
for(i=1;i<=k+1;++i)sl[i]=1ll*sl[i-1]*Del(n,i)%mod;
for(i=k+1;i>=1;--i)sr[i]=1ll*sr[i+1]*Del(n,i)%mod;
for(i=1;i<=k+1;++i)ans=Add(ans,1ll*sl[i-1]*sr[i+1]%mod*idk1[i]%mod);
return ans;
}
signed main(){
int f1,f2,f3,f4,g1,g2;
scanf("%d%d",&n,&k);init();f1=fk(n);f2=fk(Add(n,n));f3=fk1(n);f4=fk1(Add(n,n));
g1=Add(f3,1ll*Add(n,n+1)*Del(f2,f1)%mod);g2=Add(1ll*Add(pow(2,k-2),1)*f1%mod,Del(f4,f3));
printf("%d",1ll*pow(n,mod-2)*Del(g1,g2)%mod);
}

LGP5437题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. NSSet和NSMutableSet - By吴帮雷

    1.NSSet的使用 [NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造 [NSSet setWithArray:(NSArray *)array];用数组构造 ...

  2. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  3. Java中eq、ne、ge、gt、le、lt的含义

    Java中eq.ne.ge.gt.le.lt 关系运算符包括EQ.NE.GE.GT.LE.LT几个,关系运算符返回的是真"True"或假"False". eq( ...

  4. suse 12 二进制部署 Kubernetets 1.19.7 - 第08章 - 部署kube-scheduler组件

    文章目录 1.8.部署kube-scheduler 1.8.0.创建kube-scheduler请求证书 1.8.1.生成kube-scheduler证书和私钥 1.8.2.创建kube-schedu ...

  5. python中try...excpet多种使用方法

    1 print('\n欢迎使用除法计算器!\n') 2 3 while True: 4 try: 5 x = input('请你输入被除数:') 6 y = input('请你输入除数:') 7 z ...

  6. 来自牛逼哥的阴间MD5(web)

    这个web题目是来自队里面牛逼哥的题目,审计源码, 看到这两个参数,前面的a和b就是直接输出数字,再看下面的,需要弱比较的输出一个c,要求应该是需要一个加密之前是一个0e开头的字符串,加密之后还是0e ...

  7. Java中的Unsafe在安全领域的一些应用总结和复现

    目录 0 前言 1 基本使用 1.1 内存级别修改值 1.2 创建对象 1.3 创建VM Anonymous Class 2 利用姿势 2.1 修改值以关闭RASP等防御措施 2.2 创建Native ...

  8. (反射+内省机制的运用)处理jdbc的结果集

    1.原理:反射+内省 2.反射:动态创建对象 3.内省:动态处理对象的属性值 4.结果集处理: (1)把结果集中的一行数据,封装成一个对象,专门针对结果集中只有一行数据的情况. (2)处理结果集--多 ...

  9. Smartbi研究院分享:数据仓库的五大特点

    ​我先给大家举个例子,首先数据仓库,从字面上理解就可以感受到这是一个很大的空间,而且存储的物品很杂,里面会存放酱油.沐浴露.洗发精等物品,而数据库是存放酱油.盐等厨房用品,洗浴又是一个数据库.另外一个 ...

  10. 报表工具为什么我推荐用Smartbi,数据分析师和初学者都能灵活运用

    在很多人入门数据分析师或者投身大数据行业的时候,肯定会接触到报表工具,很多人这时候就会去使用一些Excel插件的报表工具,但是很多报表工具都是需要下载一系列的软件,配置各种复杂的环境.尤其是一些数据分 ...