zoukankan      html  css  js  c++  java
  • JZOJ6675. 【2020.05.30省选模拟】交通网络

    Description

    在这里插入图片描述
    在这里插入图片描述
    n<=5e5n<=5e5

    Solution

    O(n^4)

    • 直接放弃思考矩阵树即可过n<=80n<=80,获得23分。

    O(n^2)

    • 考虑先枚举一些特殊边,将n个点分成m个联通块,再用prufer序列计算这个完全图的方案数:nm2i=1msin^{m-2}prod_{i=1}^ms_i
    • 考虑prufer序列中的一个值代表了一条边,且长度为m2m-2,那么连边的时候就可以有n个顶点,即nm2n^{m-2}。又因为prufer序列出现次数为度数-1,所以每一个联通块只考虑到了度数-1次顶点的选择,所以还有sisi的贡献没有计算到。
    • 直接DP即可O(n^2)

    O(nlogn)

    • si=1msi=(i>=0ixi)m[xn]=(x(1x)2)m[xn]=1(1x)2m[xnm]=(1+x+x2+x3+...)2m[xnm]=Cnm+2m12m1=Cn+m12m1sum_{s}prod_{i=1}^ms_i=(sum_{i>=0}ix^i)^m[x^n]=(frac{x}{(1-x)^2})^m[x^n]=frac{1}{(1-x)^{2m}}[x^{n-m}]=(1+x+x^2+x^3+...)^{2m}[x^{n-m}]=C_{n-m+2m-1}^{2m-1}=C_{n+m-1}^{2m-1}
    • 因此确定m个联通快的方案数就是上面的东西乘上nm2n^{m-2}
    • 但是这是至少nmn-m条特殊边的方案数,设至少n条方案为f(n)f(n),则答案要求的恰好g(n)g(n),有f(n)=m>=nCmng(m)f(n)=sum_{m>=n}C_m^n*g(m).
    • g(n)=m>=nCmn(1)mnf(m)g(n)=sum_{m>=n}C_{m}^{n}(-1)^{m-n}f(m),卷积即可求出对应位置的答案。

    O(n)

    • 我们先考虑2x2^x为权值怎么办,那么相当于任意一个恰好x条的都会被它的任意一个子集算一次,答案实际上就是f(i)sum f(i)
    • 再考虑权值为x2xx2^x怎么做,x2x=2x2x1x2^x=2*x2^{x-1},后者就是2i=0xiCxi2*sum_{i=0}^xiC_x^i
    • 原本计算2x2^x时,是i=0xCxisum_{i=0}^xC_x^i,那么现在这个答案显然就是2f(i)i2*sum f(i)*i
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #define ll long long 
    #define mo 998244353
    #define maxn 1000005
    using namespace std;
    
    int n,i;
    ll fct[maxn],invf[maxn],ans,f[maxn],mul[maxn];
    
    ll ksm(ll x,ll y){
    	ll s=1;
    	for(;y;y/=2,x=x*x%mo) if (y&1)
    		s=s*x%mo;
    	return s;
    }
    
    ll C(int n,int m){return fct[n]*invf[n-m]%mo*invf[m]%mo;}
    
    int main(){
    	scanf("%d",&n);
    	fct[0]=1;for(i=1;i<=2*n;i++) fct[i]=fct[i-1]*i%mo;
    	invf[2*n]=ksm(fct[2*n],mo-2);
    	for(i=2*n-1;i>=0;i--) invf[i]=invf[i+1]*(i+1)%mo;
    	mul[0]=1;for(i=1;i<=n;i++) mul[i]=mul[i-1]*n%mo;
    	f[n-1]=1;for(i=2;i<=n;i++) f[n-i]=C(n+i-1,2*i-1)*mul[i-2]%mo;
    	for(i=0;i<n;i++) ans+=f[i]*i%mo;
    	printf("%lld",ans*2%mo);
    }
    
    
  • 相关阅读:
    restful规范以及drf框架
    vue的第三方插件,vuex,axios,element-ui ,jq+bs
    路由,生命周期钩子函数,数据间的交互,全局配置js与css
    实例成员补充,项目环境配置以及vue组件
    vue指令实例成员
    初识vue
    django中如何暴露后端任意文件资源
    django中间件以及请求生命流程图
    wraps修饰器
    cookie与session
  • 原文地址:https://www.cnblogs.com/DeepThinking/p/13090877.html
Copyright © 2011-2022 走看看