zoukankan      html  css  js  c++  java
  • LOJ6501「雅礼集训 2018 Day4」Cube

    https://loj.ac/p/6501

    考虑一个 (n-1) 维基础图形,在第 (n) 维度上移动适当距离,轨迹即变成 (n) 维基础图形
    (n) 维基础图形中的 (m) 维基础图形数量为 (f_{n,m})
    (n-1) 维基础图形中的某一 (m) 维基础图形,会在移动的起点和终点分别出现一次,也就是 (2f_{n-1,m})
    (n-1) 维基础图形中的某一 (m-1) 维基础图形,在移动过程中,他的轨迹会形成一个 (m) 维基础图形留在这个 (n) 维基础图形中,也就是 (f_{n-1,m-1})
    于是有了式子:(f_{n,m}=2f_{n-1,m}+f_{n-1,m-1})

    讨论如何快速计算

    [f_{n,m}=af_{n-1,m-1}+bf_{n-1,m},f_{0,0}=1 ]

    有:

    [inom{n}{m}a^mb^{n-m}=a imes inom{n-1}{m-1}a^{m-1}b^{n-m}+b imes inom{n-1}{m}a^{m}b^{n-m-1} ]

    所以:

    [f_{n,m}=inom{n}{m}a^mb^{n-m}=[x^m](ax+b)^n ]

    因此本题答案即为 (inom{n}{m}2^{n-m})

    #define mod 998244353
    inline long long power(long long a,long long b){
    	long long ans=1;
    	while(b){
    		if(b&1) ans=ans*a%mod;
    		a=a*a%mod;b>>=1;
    	}
    	return ans;
    }
    #define N 100006
    long long fac[N],inv[N],power2[N];
    int main(){
    	fac[0]=inv[0]=power2[0]=1;
    	for(int i=1;i<N;i++) fac[i]=fac[i-1]*i%mod,power2[i]=power2[i-1]*2%mod;
    	inv[N-1]=power(fac[N-1],mod-2);
    	for(int i=N-2;i;i--) inv[i]=inv[i+1]*(i+1)%mod;
    int $=read();while($--){
    	int n=read(),m=read();
    	printf("%lld
    ",fac[n]*inv[m]%mod*inv[n-m]%mod*power2[n-m]%mod);
    }
    	return 0;
    }
    
  • 相关阅读:
    CSS中A的一个应用
    net2.0下的简繁转换
    SQL Server游标的使用【转】
    在sql stuff 函数用法
    在sql stuff 函数用法 1
    关于数据库优化问题收集
    SQL中 patindex函数的用法
    SQL中的TRY CATCH
    SqlDataAdapter.Update批量数据更新
    在winForm窗体上加上DialogResult作为返回
  • 原文地址:https://www.cnblogs.com/suxxsfe/p/15394707.html
Copyright © 2011-2022 走看看