zoukankan      html  css  js  c++  java
  • NC17134 Symmetric Matrix(数学+dp)

    这道题的矩阵需要转化一下思路,转换成邻接矩阵,也就是看成某个点与别的点的连线

    因为每个点只和别的点有且只有两条线,因此每个点都在一个环中

    这个有两种情况,一种是重边,也就是两点间是一个环,其他就是随意的

    因此可以通过组合数公式推出dp方程

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=3e5+10;
    const int mod=1e9+7;
    ll f[N];
    int main(){
        ios::sync_with_stdio(false);
        ll n,m;
        while(cin>>n>>m){
            ll i;
            f[0]=1,f[1]=0,f[2]=f[3]=1;
            for(i=4;i<=n;i++){
                f[i]=((i-1)*(f[i-1]+f[i-2])%m-(i-1)*(i-2)/2%m*f[i-3]%m+m)%m;
            }
            cout<<f[n]<<endl;
        }
    }
    View Code
  • 相关阅读:
    2020 11 21
    2020 11 20
    2020 11 19
    2020 11 18
    2020 11 17
    2020 11 16
    2020 11 15
    2020 11 14
    2020 11 14
    第五周学习进度报告
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/13253580.html
Copyright © 2011-2022 走看看