【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 ...
随机推荐
- JavaWeb学习篇之----Tomcat中配置数字证书以及网络传输数据中的密码学知识
今天是学习JavaWeb的第二天,我们来了解什么呢?就了解一下Tomcat中配置数字证书的相关内容,但是在说这部分内容的时候,我们貌似得先说一下数字证书的相关概念,那说到数字证书的时候我们还得了解一些 ...
- flutter 按钮单选封装
数字是自己先写死的 List list =[ { "title": "影视特效", , }, { "title": "室内设计&q ...
- 10.RabbitMQ Fanout类型交换机
Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上. Producer.java package com.test.fanout; import co ...
- Java设计模式简单总结
1.单例模式:在应用程序整个生命周期中,单例类的实例只有一个,并且会自动实例化.单例类的构造方法必须为私有,并且提供一个全局访问点 public class Test { private Test() ...
- LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
题目标签:Binary Search 题目给了我们一组字母,让我们找出比 target 大的最小的那个字母. 利用 binary search,如果mid 比 target 小,或者等于,那么移到右半 ...
- 剑指offer——06二叉树的下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题目的意思是,在一颗二叉树的中序遍历中,给出其中一 ...
- 细数Intellij Idea10个蛋疼问题!
Intellij Idea以下简称IJ. 昨天细数了IJ上的10大666的姿势,IJ确实很智能,在很多方便可以完爆Eclipes,可在某些方面真的被Eclipse秒杀 1.乱码 在Eclipse中很少 ...
- 使用R语言 SDK调取tushare数据
安装Tushare 打开RStudio,在控制台输入命令: > install.packages('Tushare') Tushare的R包需要依赖httr.tidyverse.forecast ...
- Pathfinding 模板题 /// BFS oj21413
题目大意: Description Bessie is stranded on a deserted arctic island and wants to determine all the path ...
- 9款很棒的网页绘制图表JavaScript框架脚本
推荐9款很棒的可在网页中绘制图表的JavaScript脚本,这些有趣的JS脚本可以帮助你快速方便的绘制图表(线.面.饼.条…),其中包括jQuery.MooTools.Prototype和一些其它的J ...