正题

题目链接:https://www.luogu.com.cn/problem/P5437


题目大意

nnn个点的完全图,连接i,ji,ji,j的边权值为(i+j)k(i+j)^k(i+j)k。随机选出一个生成树,求期望边权和。

1≤n<998244353,1≤k≤1071\leq n<998244353,1\leq k\leq 10^71≤n<998244353,1≤k≤107


解题思路

一条边选出来的概率是2n\frac{2}{n}n2​(总共有2n(n−1)\frac{2}{n(n-1)}n(n−1)2​条,选n−1n-1n−1条,或者PruferPruferPrufer序列也能证明)

所以现在考虑怎么求
∑i=1n∑j=1n(i+j)k\sum_{i=1}^n\sum_{j=1}^n(i+j)^ki=1∑n​j=1∑n​(i+j)k
这个东西首先f(n)=∑i=1n∑j=1ni+jf(n)=\sum_{i=1}^n\sum_{j=1}^ni+jf(n)=∑i=1n​∑j=1n​i+j是一个二项式,所以(i+j)k(i+j)^k(i+j)k就是一个k+2k+2k+2次多项式,所以可以考虑用拉插。

现在是如何快速求出1∼k1\sim k1∼k的值,考虑递推
f(n)−f(n−1)=∑i=1n∑j=1n(i+j)k−∑i=1n−1∑j=1n−1(i+j)kf(n)-f(n-1)=\sum_{i=1}^n\sum_{j=1}^n(i+j)^k-\sum_{i=1}^{n-1}\sum_{j=1}^{n-1}(i+j)^kf(n)−f(n−1)=i=1∑n​j=1∑n​(i+j)k−i=1∑n−1​j=1∑n−1​(i+j)k
=∑i=n+12n−1ik=\sum_{i=n+1}^{2n-1}i^k=i=n+1∑2n−1​ik

然后用线性筛预处理出iki^kik就好了。当然拉插也要用线性的优化

时间复杂度O(n)O(n)O(n)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e7+10,P=998244353;
ll n,k,cnt,pri[N/5],w[N<<1],y[N];
ll pre[N],suf[N],inv[N],ans;
bool v[N<<1];
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
void Prime(int n){w[1]=1;for(ll i=2;i<=n;i++){if(!v[i])pri[++cnt]=i,w[i]=power(i,k);for(ll j=1;j<=cnt&&i*pri[j]<=n;j++){v[i*pri[j]]=1;w[i*pri[j]]=w[i]*w[pri[j]]%P;if(i%pri[j]==0)break;}}return;
}
signed main()
{scanf("%lld%lld",&n,&k);Prime(k*2+6);k+=3;pre[0]=suf[k+1]=inv[1]=1;y[2]=w[3];for(ll i=3;i<=k;i++)y[i]=(y[i-1]+w[i*2-1]+w[i*2-2]-w[i])%P;for(ll i=1;i<=k;i++)y[i]=(y[i-1]+y[i])%P;for(ll i=1;i<=k;i++)pre[i]=pre[i-1]*(n-i)%P;for(ll i=k;i>=1;i--)suf[i]=suf[i+1]*(n-i)%P;for(ll i=2;i<=k;i++)inv[i]=P-inv[P%i]*(P/i)%P;inv[0]=1;for(ll i=1;i<=k;i++)inv[i]=inv[i-1]*inv[i]%P;for(ll i=1;i<=k;i++)(ans+=pre[i-1]*suf[i+1]%P*inv[i-1]%P*inv[k-i]%P*y[i]%P*(((k-i)&1)?-1:1))%=P;printf("%lld\n",(ans+P)%P*power(n,P-2)%P*2%P);return 0;
}

P5437-[XR-2]约定【拉格朗日差值,数学期望】相关推荐

  1. P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】

    正题 题目链接:https://www.luogu.com.cn/problem/P4593 题目大意 场上有若干只怪,最高的为nnn,每个怪血量不同,有mmm个血量不存在. 不停释放亵渎(全场打一, ...

  2. [51nod]1229 序列求和 V2(数学+拉格朗日差值)

    题面 传送门 题解 这种颓柿子的题我可能死活做不出来-- 首先\(r=0\)--算了不说了,\(r=1\)就是个裸的自然数幂次和直接爱怎么搞怎么搞了,所以以下都假设\(r>1\) 设 \[s_p ...

  3. 拉格朗日差值法----算法学习

    一.定义: 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值. 假设任意两个不同的xj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多 ...

  4. 拉格朗日差值法python实现

    Lagrange插值法:Lagrange插值法:Lagrange插值法:给定一组点(x1,y1),(x2,y2)...(xn,yn)给定一组点 (x_{1},y_{1}),(x_{2},y_{2}). ...

  5. 拉格朗日差值 - 杜教板子

    牛客网暑期ACM多校训练营(第一场) F Sum of Maximum 杜教板子: 证明https://blog.csdn.net/Lee_w_j__/article/details/81135539 ...

  6. 概率统计与机器学习:期望,方差,数学期望,样本均值,样本方差之间的区别

    1.样本均值:我们有n个样本,每个样本的观测值为Xi,那么样本均值指的是 1/n * ∑x(i),求n个观测值的平均值 2.数学期望:就是样本均值,是随机变量,即样本数其实并不是确定的 PS:从概率论 ...

  7. 备战数学建模六之差值拟合

    一维差值拟合 import numpy as np from matplotlib import pyplot as plt from scipy.interpolate import interp1 ...

  8. 安卓修改动画效果--动画差值器TimeInterpolator

    前一段时间让实现一个类似弹幕的效果,从右到左飘过去,时间八秒,嗯,很好做,一个动画就ok了 布局代码: <?xml version="1.0" encoding=" ...

  9. python表示差值_python差值函数

    python可否用自定义函数对数据进行插值 除了interp函数自带的插值方式,可否用一个自定义的函数表达式对interp直接定义a=True/False就行,示例代码: #定义布尔值类型参数a,b, ...

最新文章

  1. plsql导入到mysql数据库乱码问题_PLSQL打开sql文件中文乱码解决方案
  2. 函授报计算机还是工商管理,函授本科行政管理工商管理经济管理分别都有哪......
  3. idea2019.x配置Gradle
  4. python读取大文件内容_Python模块linecache处理大文件
  5. nginx php环境搭建_php+nginx环境配置
  6. 玩转数据结构——均摊复杂度和防止复杂度的震荡(笔记)
  7. Navicat的快捷键
  8. hdu 3905(dp)
  9. Ubuntu18.04下QSqlDatabase: QMYSQL driver not loaded
  10. 红外遥控NEC协议总结
  11. SecureCRT下载和破解
  12. PADS2007_教程之PADS LAYOUT
  13. View 的测量 MeasureSpec
  14. android开发简历,轻松拿到了阿里Android高级开发工程师的offer
  15. 追捕文件WRY.DLL的浅显分析及程序示例
  16. OpenGL_10 3D空间中移动图像
  17. 聊一聊:苹果发布新款M2 MacBook Air,macOS 13上线
  18. 每天只需15分钟!情感励志视频剪辑一天200多,不用真人出镜
  19. 【Unity】UGUI控件大小适配父容器
  20. 【速记】Android让View的显示超出父容器

热门文章

  1. linux 文档属于apache,Apache 安装和使用文档
  2. python生成器yield原理_Python generator生成器和yield表达式详解
  3. python if elif else_python:通讯录(字典+while+if/else)
  4. php crypt mysql password_php使用crypt()函数进行加密
  5. mybatis mysql usegeneratedkeys_mybatis中useGeneratedKeys用法--插入数据库后获取主键值
  6. e盾服务端源码_gRPC服务注册发现及负载均衡的实现方案与源码解析
  7. leetcode257. 二叉树的所有路径(两种做法)
  8. leedcode05 找出缺失的观测数据(思路加详解)
  9. hdu4911 Inversion-归并排序
  10. number five