BZOJ 5093: 圖的價值 第二類斯特林數$O(n \log n)$
阿新 • • 發佈:2019-01-13
簡單題意
一個帶標號的圖的價值定義為每個點度數的
次方的和。
個點的帶標號的簡單無向圖的價值之和
題解
每個點只有標號之別,故只需要求出一個點的價值之和
即可。
計算第二類斯特林數即可。
容斥原理可得:
化為EGF就行了。
AC Code:
#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define maxn 600005
#define mod 998244353
#define LL long long
using namespace std;
int n,k;
const int inv2 = (mod + 1) / 2;
int w[maxn]={1},r[maxn],lg[maxn],wlen,inv[maxn]={1,1},fac[maxn]={1,1},invf[maxn]={1,1};
int Pow(int base,LL k)
{
int ret = 1;
for(;k;k>>=1,base=1ll*base*base%mod)
if(k&1)
ret = 1ll * ret * base % mod;
return ret;
}
void Init(int n)
{
for(wlen=1;n>=2*wlen;wlen<<=1);
for(int i=1,pw=Pow(3,(mod-1)/(2*wlen));i<=2*wlen;i++) w[i] = 1ll * w[i-1] * pw % mod;
for(int i=2;i<=2*wlen;i++)
lg[i] = lg[i>>1] + 1,
fac[i