LGP5437题解
呃怎么感觉很裸啊(
题意是让求生成树边权之和的期望,那么我们只需要算出所有生成树的边权之和除以生成树边数即可。
由于是求和,我们只需要计算出每条边对答案的贡献即可。
我们知道一个完全图有 \(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}}\)。
\]
里面的东西给转化一下:
\]
我们枚举每一个 \((i+j)\) 的出现次数:
\]
\]
我们只需要知道自然数的 \(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题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 什么是UILabel
UILabel极其常用,功能比较专一:显示文字 UILabel的常见属性 @property(nonatomic,copy) NSString *text; 显示的文字 @property(nonat ...
- UITextFIeld的输入格式问题 ----W.P
---恢复内容开始--- 1.银行卡的输入格式,四个数字,一个空格. 2.金额的输入格式限制,不能以"."开头,"."后精确两位. 注意:第三方输入软件(百度, ...
- go基础——变量与常量
变量 package main import "fmt" /* 变量:variable 概念:一小块内存,用于存储数据,在程序运行过程中数值可以改变 特性:静态语言,强类型语言 * ...
- 《PHP程序员面试笔试宝典》——如何克服面试中紧张的情绪?
本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 面试的成功与否,往小的方面讲,直接关系到求职者的工作问题,往大 ...
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件
jQuery简介 宗旨:Write less, do more. 内部封装了js代码 是编程更加简单并且兼容所有的主流浏览器 版本:1.x 2.x 3.x # 可以使用3.x最新版 是第三方的类库:使 ...
- Solution -「ZJOI 2013」「洛谷 P3337」防守战线
\(\mathcal{Description}\) Link. 有 \(n\) 个位置,从左至右编号 \(1\sim n\).在第 \(i\) 个位置放一座塔的代价为 \(c_i\),一个位置 ...
- verification TLM传输数据导致多线程访问同一个数据
TLM传输数据导致多线程访问同一个数据 原因 TLM发送数据跟mailbox类似,都是发送的引用,这样发送端和接收端的引用都指向同一个数据,这样就会出现发送端修改数据会影响到接收端,比如发送的时候数据 ...
- pytest(11)-Allure生成测试报告(一)
Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...
- 命令行下Git调用IDEA的diff功能
命令行下git diff, 有人欢喜有人厌, 本文以IDEA diff为例, 介绍如何更换Git的diff工具. IDEA diff IDEA作为一个图形化工具, 其实也提供了极少一部分命令行接口, ...
- [题解]UVA10801 Lift Hopping
链接:http://vjudge.net/problem/viewProblem.action?id=22172 描述:有n部电梯,每部电梯都有不能停下的楼层,要求搭乘电梯从第0层到第k层. 思路:单 ...