[Lydsy1711月赛]图的价值

Time Limit: 30 Sec  Memory Limit: 256 MB
Submit: 245  Solved: 128
[Submit][Status][Discuss]

Description

“简单无向图”是指无重边、无自环的无向图(不一定连通)。
一个带标号的图的价值定义为每个点度数的k次方的和。
给定n和k,请计算所有n个点的带标号的简单无向图的价值之和。
因为答案很大,请对998244353取模输出。
 

Input

第一行包含两个正整数n,k(1<=n<=10^9,1<=k<=200000)。
 

Output

输出一行一个整数,即答案对998244353取模的结果。

 

Sample Input

6 5

Sample Output

67584000

HINT

 

Source

本OJ付费获取

因为第二类斯特林数m>n的时候为0,所以就优化成,k log k了,主要就是计算第二类斯特林数,后面组合那里因为最多k

所以就是n-k+1项的反过来乘就可以处理了,然后还有ksm一下。

 #include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath> #define ll long long
#define mod 998244353
#define G 3
#define N 200007
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+ch-'';ch=getchar();}
return x*f;
} int n,k,num,L,ans,inv;
int jc[N],jcf[N],ny[N];
int a[N<<],b[N<<],rev[N<<]; int ksm(int a,ll b)
{
int ans=;
while(b)
{
if (b&) ans=(ll)ans*a%mod;
a=(ll)a*a%mod;
b>>=;
}
return ans;
}
void init()
{
jc[]=jcf[]=ny[]=;
for (int i=;i<=k;i++)
jc[i]=(ll)jc[i-]*i%mod,ny[i]=ksm(i,mod-),ny[i]=(ll)ny[i]*ny[i-]%mod;
for (int i=;i<=k;i++)
a[i]=1ll*((i&)?(-):)*ny[i],b[i]=(ll)ksm(i,k)*ny[i]%mod;
for (int i=;i<=k;i++) jcf[i]=(ll)jcf[i-]*(n-i+)%mod;
for (num=;num<=k*;num<<=,L++);if (L) L--;
inv=ksm(num,mod-);
for (int i=;i<num;i++)
rev[i]=(rev[i>>]>>)|((i&)<<L);
}
void NTT(int *a,int flag)
{
for (int i=;i<num;i++)
if (i<rev[i]) swap(a[i],a[rev[i]]);
for (int i=;i<num;i<<=)
{
int wn=ksm(G,(mod-)/(i<<));
for (int j=;j<num;j+=(i<<))
{
int w=;
for (int k=;k<i;w=(ll)w*wn%mod,k++)
{
int x=a[j+k],y=(ll)w*a[j+k+i]%mod;
a[j+k]=(x+y)%mod,a[j+k+i]=(x-y<)?x-y+mod:x-y;
}
}
}
if (flag==-)
{
for (int i=;i<num/;i++) swap(a[i],a[num-i]);
for (int i=;i<num;i++) a[i]=(ll)a[i]*inv%mod;
}
}
int main()
{
n=read(),k=read(),n--;
init();
NTT(a,),NTT(b,);
for (int i=;i<num;i++)
a[i]=(ll)a[i]*b[i]%mod;
NTT(a,-);
for (int i=;i<=min(n,k);i++)
(ans+=(ll)a[i]*jc[i]%mod*ksm(,n-i)%mod*jcf[i]%mod*ny[i]%mod)%=mod;
ans=(ll)ans*(n+)%mod*ksm(,(ll)(n-)*n/)%mod;
printf("%d\n",ans);
}

bzoj 5093 [Lydsy1711月赛]图的价值 NTT+第二类斯特林数的更多相关文章

  1. BZOJ5093 [Lydsy1711月赛]图的价值 【第二类斯特林数 + NTT】

    题目链接 BZOJ5093 题解 点之间是没有区别的,所以我们可以计算出一个点的所有贡献,然后乘上\(n\) 一个点可能向剩余的\(n - 1\)个点连边,那么就有 \[ans = 2^{{n - 1 ...

  2. BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)

    题目链接 对于单独一个点,我们枚举它的度数(有多少条边)来计算它的贡献:\[\sum_{i=0}^{n-1}i^kC_{n-1}^i2^{\frac{(n-2)(n-1)}{2}}\] 每个点是一样的 ...

  3. 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)

    [BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...

  4. BZOJ 5093: [Lydsy1711月赛]图的价值 第二类斯特林数+NTT

    定义有向图的价值为图中每一个点的度数的 \(k\) 次方之和. 求:对于 \(n\) 个点的无向图所有可能情况的图的价值之和. 遇到这种题,八成是每个点单独算贡献,然后累加起来. 我们可以枚举一个点的 ...

  5. BZOJ 5093: [Lydsy1711月赛]图的价值

    第二类斯特林数模版题 需要一些组合数的小$ trick$ upd:这里更新了本题巧妙的$ O(k)$做法,虽然常数很大就是了 传送门:here 题意:求所有$ n$个节点的无重边自环图的价值和,定义一 ...

  6. bzoj5093:图的价值(第二类斯特林数+NTT)

    传送门 首先,题目所求为\[n\times 2^{C_{n-1}^2}\sum_{i=0}^{n-1}C_{n-1}^ii^k\] 即对于每个点\(i\),枚举它的度数,然后计算方案.因为有\(n\) ...

  7. bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 不要见到组合数就拆! 枚举每个点的度数,则答案为 \( n*\sum\limits_{ ...

  8. BZOJ 5093[Lydsy1711月赛]图的价值 线性做法

    博主曾更过一篇复杂度为$O( k· \log k)$的多项式做法在这里 惊闻本题有$ O(k)$的神仙做法,说起神仙我就想起了于是就去学习了一波 幂与第二类斯特林数 推导看这里 $$ x^k=\sum ...

  9. 【bzoj5093】[Lydsy1711月赛]图的价值(NTT+第二类斯特林数)

    题意: 给定\(n\)个点,一个图的价值定义为所有点的度数的\(k\)次方之和. 现在计算所有\(n\)个点的简单无向图的价值之和. 思路: 将式子列出来: \[ \sum_{i=1}^n\sum_{ ...

随机推荐

  1. Git 克隆指定分支代码

    git clone 指定分支 拉代码 1.git clone 不指定分支 git clone  http://10.1.1.11/service/sz-service.git 2.git clone ...

  2. OrCAD设置原理图页面大小

    1. 右键要修改的原理图文件 2. 选择适合的尺寸

  3. SharePoint显示错误信息

         在SharePoint项目中,一般如果发生错误,SharePoint会弹出它自定义的报错页面,一般就显示"Something went wrong",如果光是看这一句话, ...

  4. 『AngularJS』ngValue

    原文 描述 绑定给定的表达式到input[select]或input[radio]的值,以便当这个元素被选中的时候,设置这个元素的ngModel到绑定的值.当需要使用ng-repeat来动态生成rad ...

  5. windows10安装liux系统

    1.前言 因为大部分服务器都是linux系统,需要掌握linux命令行和熟悉linux环境,所以自己用为数不多的工资买了新电脑,就是为了学习linux系统,此文是为了记载自己在windows系统上安装 ...

  6. Qt Qwdget 汽车仪表知识点拆解1 速度表示

    先贴上效果图,注意,没有写逻辑,所以这些都是乱动的 这里线主要说一下中间显示速度的显示制作的方式,在这里,自己专门写了一个数字的仪表 考虑的一般的汽车是没有办法把瞬时速度提升到四位数的,所以我这里就放 ...

  7. shiro笔记

    控制某一角色拥有此选项 上图 标签为shiro:hasRole表示 此时只有admin角色才拥有 系统用户管理和角色管理两个tab 页 上图 标签为shiro:hasPermission表示 此时只有 ...

  8. PyTorch深度学习计算机视觉框架

    Taylor Guo @ Shanghai - 2018.10.22 - 星期一 PyTorch 资源链接 图像分类 VGG ResNet DenseNet MobileNetV2 ResNeXt S ...

  9. Halcon17对硬件配置要求

     Halcon17对硬件配置要求 Halcon17已经发布出来了,很多朋友一定想安装这款机器视觉软件来学习,我们今天给大家讲解下,Halcon17对硬件配置的要求: Halcon17 For Wind ...

  10. word2vec是如何工作的?

    如何有效的将文本向量化是自然语言处理(Natural Language Processing: NLP)领域非常重要的一个研究方向.传统的文本向量化可以用独热编码(one-hot encoding). ...