题面

Bzoj

Sol

一张无向无重边自环的图的边数最多为\(\frac{n(n-1)}{2}\)

考虑每个点的贡献

\[n*2^{\frac{n(n-1)}{2} - (n-1)}\sum_{i=0}^{n-1}i^kC(n-1, i)
\]

很好理解

考虑后面的\(\sum_{i=0}^{n-1}i^kC(n-1, i)\)

\(i^k\)这里把它用第二类斯特林数表示出来

那么就是

\[\sum_{i=0}^{n-1}\sum_{j=0}^{i}S(k, j) j!C(i, j)
\]

\[=\sum_{j=0}^{n-1}S(k, j)j!\sum_{i=j}^{n-1}C(n-1,i)C(i,j)
\]

考虑\(\sum_{i=j}^{n-1}C(n-1,i)C(i,j)\)

就是\(C(n-1, j)\sum_{i=j}^{n-1}C(n-1, i-j)=C(n-1,j)2^{n-1-j}\)

带回去

\[\sum_{j=0}^{n-1}j!C(n-1,j)2^{n-1-j}S(k, j)
\]

\[=\sum_{j=0}^{n-1}\frac{(n-1)!}{(n-1-j)!}2^{n-1-j}S(k,j)
\]

又由于\(i>j\)时\(S(i, j)=0\),\(n\)很大枚到\(k\)就可以了

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int Zsy(998244353);
const int Phi(998244352);
const int G(3);
const int _(8e5 + 5); IL int Input(){
RG int x = 0, z = 1; RG char c = getchar();
for(; c < '0' || c > '9'; c = getchar()) z = c == '-' ? -1 : 1;
for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + (c ^ 48);
return x * z;
} int n, k, ans, A[_], B[_], l, N, r[_], mx, fac[_], inv[_]; IL int Pow(RG ll x, RG ll y){
RG ll ret = 1;
for(; y; y >>= 1, x = x * x % Zsy) if(y & 1) ret = ret * x % Zsy;
return ret;
} IL void NTT(RG int* P, RG int opt){
for(RG int i = 0; i < N; ++i) if(i < r[i]) swap(P[i], P[r[i]]);
for(RG int i = 1; i < N; i <<= 1){
RG int W = Pow(G, Phi / (i << 1));
if(opt == -1) W = Pow(W, Zsy - 2);
for(RG int p = i << 1, j = 0; j < N; j += p)
for(RG int w = 1, k = 0; k < i; ++k, w = 1LL * w * W % Zsy){
RG int X = P[k + j], Y = 1LL * w * P[k + j + i] % Zsy;
P[k + j] = (X + Y) % Zsy, P[k + j + i] = (X - Y + Zsy) % Zsy;
}
}
if(opt == 1) return;
RG int Inv = Pow(N, Zsy - 2);
for(RG int i = 0; i < N; ++i) P[i] = 1LL * P[i] * Inv % Zsy;
} IL void Mul(){
for(N = 1; N <= mx + mx; N <<= 1) ++l;
for(RG int i = 0; i < N; ++i) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1));
NTT(A, 1); NTT(B, 1);
for(RG int i = 0; i < N; ++i) A[i] = 1LL * A[i] * B[i] % Zsy;
NTT(A, -1);
} IL void Up(RG int &x, RG int y){
x += y;
if(x >= Zsy) x -= Zsy;
} int main(RG int argc, RG char* argv[]){
n = Input(), k = Input(), mx = min(n - 1, k);
fac[0] = 1;
for(RG int i = 1; i <= mx; ++i) fac[i] = 1LL * i * fac[i - 1] % Zsy;
inv[mx] = Pow(fac[mx], Zsy - 2);
for(RG int i = mx - 1; ~i; --i) inv[i] = 1LL * inv[i + 1] * (i + 1) % Zsy;
for(RG int i = 0; i <= mx; ++i){
A[i] = B[i] = inv[i];
B[i] = 1LL * B[i] * Pow(i, k) % Zsy;
if(i & 1) A[i] = Zsy - A[i];
}
Mul(); RG int Inv = Pow(2, Zsy - 2);
for(RG int i = 0, e = 1, x = n - 1, pw = Pow(2, n - 1); i <= mx; ++i, --x){
Up(ans, 1LL * e * pw % Zsy * A[i] % Zsy);
e = 1LL * e * x % Zsy;
pw = 1LL * pw * Inv % Zsy;
}
ans = 1LL * n * Pow(2, 1LL * n * (n - 1) / 2 - n + 1) % Zsy * ans % Zsy;
printf("%d\n", ans);
return 0;
}

Bzoj5093: 图的价值的更多相关文章

  1. [CF932E]Team Work & [BZOJ5093]图的价值

    CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...

  2. 【题解】BZOJ5093图的价值(二项式+NTT)

    [题解]BZOJ5093图的价值(二项式+NTT) 今天才做这道题,是我太弱了 强烈吐槽c++这种垃圾语言tmd数组越界不re反倒去别的数组里搞事情我只想说QAQ 推了一张A4纸的式子 考虑每个点的度 ...

  3. [BZOJ5093]图的价值(NTT+第二类Stirling数)

    5093: [Lydsy1711月赛]图的价值 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 250  Solved: 130[Submit][Sta ...

  4. BZOJ5093图的价值(斯特林数)

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

  5. bzoj5093图的价值:多项式,斯特林数(二项式反演)

    Description “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为 ...

  6. BZOJ5093 图的价值(NTT+斯特林数)

    显然每个点会提供相同的贡献.于是现在只考虑1号点的贡献.若其度数为i,则在2~n号点选i个连上,剩下的边随便连,这样可以算出答案为 这个式子可以O(n)计算.发现k比较小,于是考虑如何将这个式子化为与 ...

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

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

  8. BZOJ5093 图的价值——推式子+第二类斯特林数

    原题链接 题解 题目等价于求这个式子 \[ans=n2^{\frac{(n-1)(n-2)}{2}}\sum\limits_{i=0}^{n-1}\binom{n-1}{i}i^k\] 有这么一个式子 ...

  9. 【学术篇】CF932E Team Work && bzoj5093 图的价值

    两个题的传送门 对于CF这道题, 分别考虑每种可能的集合大小, 每个大小为\(k\)的集合数量有\(\binom nk\)个, 所以最后的答案就是 \[\sum_{i=0}^n\binom{n}{i} ...

随机推荐

  1. yii2 模块的创建及使用

    yii2 模型创建可以通过gii工具创建,方便快速yii2 可以在项目的根目录创建一个modules文件夹存放各个模块,当然,每个模块里还可以再创建模块 一.直接在项目根目录创建一个模块 看截图--& ...

  2. elasticsearch节点(角色)类型解释node.master和node.data

    在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储 ...

  3. Openwrt上使用dnsmasq和ipset实现域名分流

    目标 部署一台自动代理路由器,实现根据域名来自动设定直连或者代理,而我要做的只是设置PC的默认网关为主路由器(192.168.0.1)还是自动代理路由器(192.168.0.254). 创建Openw ...

  4. 浅谈Java SE、Java EE、Java ME三者的区别

    本文把JAVA SE.JAVA EE.JAVA ME拿来做下区别,同时也分享一下作者的一些成果.目前的Java平台根据软件开发人员.服务提供商和设备生产商可以针对特定的市场可以分为三个版本JAVA S ...

  5. 原生ajax写的上拉加载

    上拉加载的思路 1 上拉加载是要把屏幕拉到最底部的时候触发ajax事件请求数据 2.所有要获取屏幕的高度 文档的高度 和滚动的高度 下面的代码是已经做好了兼容的可以直接拿来用 Javascript: ...

  6. C++ 函数模板“偏特化”

         模板是C++中很重要的一个特性,利用模板可以编写出类型无关的通用代码,极大的减少了代码量,提升工作效率.C++中包含类模板.函数模板,对于需要特殊处理的类型,可以通过特化的方式来实现特定类型 ...

  7. Windows Server 2016-存储新增功能

    本章给大家介绍有关Windows Server 2016 中存储方面的新增功能,具体内容如下: 1.Storage Spaces Direct: 存储空间直通允许通过使用具有本地存储的服务器构建高可用 ...

  8. java4 - 函数(方法)

    一.学习大纲: 1. 定义函数可以将功能封装 2. 函数的级别都是同级别的,不能进行函数套用 3. 便于对该功能进行复用 4. 函数只有被调用才能被执行 5. 函数的出现提高了代码的复用性 6. 函数 ...

  9. shiro框架的使用实例

    文档路径(包括数据库结构):https://pan.baidu.com/s/1eRP14AI

  10. span设置宽度有效无效问题

    在html中如何设定span的宽度?这看上去是个很简单的问题,似乎用style中的width属性就可以.例如, <!DOCTYPE html PUBLIC "-//W3C//DTD X ...