首页 > 其他分享 >[BZOJ5093] 图的价值 题解

[BZOJ5093] 图的价值 题解

时间:2025-01-23 09:33:03浏览次数:1  
标签:begin frac int 题解 sum Bmatrix end 价值 BZOJ5093

考虑计算一个点的贡献,最后 \(\times n\) 即为所求。

显然一个点的贡献为 \(\sum\limits_{i=0}^{n-1}\binom{n-1}ii^k2^{\frac{(n-1)(n-2)}2}\),则有:

\[\sum_{i=0}^{n-1}\binom{n-1}ii^k2^{\frac{(n-1)(n-2)}2}=2^{\frac{(n-1)(n-2)}2}\sum_{i=0}^{n-1}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}i^\underline j\binom{n-1}i \]

\[=2^{\frac{(n-1)(n-2)}2}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\sum_{i=0}^{n-1}i^\underline j\binom{n-1}i \]

\[=2^{\frac{(n-1)(n-2)}2}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(n-1)^\underline j\sum_{i=0}^{n-1}\binom{n-j-1}{i-j} \]

\[=2^{\frac{(n-1)(n-2)}2}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(n-1)^\underline j2^{n-j-1} \]

利用第二类斯特林数·行的做法求解 \(\begin{Bmatrix}k\\j\end{Bmatrix}\) 即可做到 \(O(k\log k)\) 的时间复杂度。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=6e5+5,p=998244353;
namespace NTT{
    int rev[N],mx,k,qp;
    struct dft{int fg[N];};
    int qpow(int x,int y){
        int re=1;
        while(y){
            if(y&1) re=re*x%p;
            x=x*x%p,y>>=1;
        }return re;
    }void init(int n){
        mx=1,k=0,rev[0]=0;
        while(mx<=n) mx*=2,k++;
        for(int i=0;i<mx;i++)
            rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));
        qp=qpow(mx,p-2);
    }void ntt(dft &a,int fl){
        for(int i=0;i<mx;i++)
            if(i<rev[i]) swap(a.fg[i],a.fg[rev[i]]);
        for(int i=1;i<mx;i*=2){
            int om=qpow(fl?3:(p+1)/3,(p-1)/(i<<1));
            for(int j=0,w=1;j<mx;j+=i*2,w=1)
                for(int k=j;k<j+i;k++,w=w*om%p){
                    int x=a.fg[k],y=w*a.fg[k+i]%p;
                    a.fg[k]=(x+y)%p,a.fg[k+i]=(x-y+p)%p;
                }
        }if(fl) return;
        for(int i=0;i<mx;i++)
            a.fg[i]=a.fg[i]*qp%p;
    }
}using namespace NTT;
int n,m;dft f,g;
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m,init(m*2+1);
    for(int i=0,jc=1;i<=m;i++,jc=jc*i%p){
        f.fg[i]=(1-i%2*2)*qpow(jc,p-2);
        g.fg[i]=qpow(i,m)*qpow(jc,p-2)%p;
    }ntt(f,1),ntt(g,1);
    for(int i=0;i<mx;i++)
        f.fg[i]=f.fg[i]*g.fg[i]%p;
    ntt(f,0);int ans=0;
    for(int i=0,dw=1;i<=m;i++,dw=dw*(n-i)%p)
        ans=(ans+f.fg[i]*dw%p*qpow(2,n-i-1))%p;
    ans=ans*qpow(2,(n-3)*n/2+1)%p*n%p;
    return cout<<ans,0;
}

标签:begin,frac,int,题解,sum,Bmatrix,end,价值,BZOJ5093
From: https://www.cnblogs.com/chang-an-22-lyh/p/18687118/bzoj5093-tu_de_jia_zhi-tj

相关文章

  • [TJOI/HEOI2016] 求和 题解
    为什么又是佳媛姐姐啊啊啊!斯特林数在这道题中不好处理,直接拆开:\[f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix}2^jj!\]\[=\sum_{j=0}^n2^jj!\sum_{i=0}^n\sum_{k=0}^j\frac{(-1)^k(j-k)^i}{k!(j-k)!}\]\[=\sum_{j=0}^n2^jj!\sum_{k=0}^j\frac{(-1)^k\sum\l......
  • [联合省选 2020A] 组合数问题 题解
    后面有一只大大的组合数,考虑下降幂干过去。\(x^k\)并不好使,这边考虑转化\(f(x)=\suma_ix^i=\sumb_ix^\underlinei\)。\[\sum_{k=0}^nf(k)x^k\binomnk=\sum_{k=0}^nx^k\sum_{i=0}^mb_ik^\underlinei\binomnk\]\[=\sum_{k=0}^nx^k\sum_{i=0}^mb_in^\underlinei\binom{n-i......
  • Bear and Bad Powers of 42 题解
    题目描述定义一个正整数是坏的,当且仅当它是\(42\)的幂次,否则它是好的。给定长为\(n\)的序列\(a_i\),保证初始所有数都是好的。接下来\(q\)次操作:1i:查询\(a_i\)。2lrx:将\(a_l,\cdots,a_r\)赋值为一个好的数\(x\)。3lrx:将\(a_l,\cdots,a_r\)加上\(......
  • [ARC178C] Sum of Abs 2 题解
    首先想到能不能用差分搞搞,但是给自己绕进去了/kel我们不妨给\(\{b_L\}\)定个不降的序(如果打在数轴上,显然序和答案无关),于是可以拿掉绝对值。注意到这个和式(记其结果为\(x\))中每个\(b_i\)的贡献系数\(c_i=2i-L-1\),于是有:\[x=\sum_{i=1}^{L}b_ic_i\]直接做不......
  • CF2061G Kevin and Teams 题解
    题目描述这是一道交互题。\(T\)组数据,一张\(n\)个点的无向完全图,边权\(\in\{0,1\}\),边权未知。你需要先输出最大的\(k\),满足无论每条边的边权是什么,都能找出\(2k\)个不同的点\(\{u_1,\cdots,u_n,v_1,\cdots,v_n\}\),使得边\((u_i,v_i)\)的权值同时为\(0\)或同时......
  • Codeforces Round 998 (Div. 3)(部分题解)
    补题链接A. Fibonacciness思路:了解清楚题意,求得是最大的斐波那契的度,数组只有5个数(最多度为3),能列出其对应的式子 或 或#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){intn,m,k;vector<int>a(4);set<int>s;......
  • 题解:洛谷 P1803 凌乱的yyy / 线段覆盖
    题目https://www.luogu.com.cn/problem/P1803题目大意给定  条线段,第  条线段放在位置 ,现在你需要从这些线段中拿出一些,使得剩下的线段不会重叠。思路考虑贪心。可以发现,按照左端点从小到大排序毫无意义(虽然样例能过)。因此考虑按右端点从小到大排序。然后尽量多放......
  • AtCoder ABC326C 题解
    题目链接问题陈述Takahashi在数字线上放置了\(N\)个礼物。第\(i\)个礼物放置在坐标\(A_i\)处。您将在数轴上选择长度为\(M\)的半开区间\([x,x+M)\),并获得其中包含的所有礼物。更具体地说,你根据以下程序获得礼物。首先,选择一个实数\(x\)。然后,获取坐标满足\(......
  • C. Game of Mathletes(题解)
    首先Alice擦一个数a,然后Bob再擦一个数b,只有当a+b=k的时候才可以得分,Alice想要最小化分数而Bob想要最大化分数,所以如果给定的数中存在两个数的和为k,那么当Alice擦掉其中一个的时候Bob一定会擦掉另一个来得分,而且题目给定的数组长度为偶数,所以我们只需要运用双指针的思想找到数组......
  • 常见问题解决 --- 引用的账户当前已锁定,且可能无法登录什么意思
     当你在尝试登录Windows系统时,看到错误提示“引用的账户当前已锁定,且可能无法登录”,这意味着你使用的用户账户由于多次输入错误的密码而被系统锁定。这是一种安全机制,旨在防止暴力破解或未经授权的访问。原因分析1.多次输入错误密码:如果连续多次输入错误的密码,系统会自......