首页 > 其他 > 详细

NC17134 Symmetric Matrix(数学+dp)

时间:2020-07-06 11:37:07      阅读:55      评论:0      收藏:0      [点我收藏+]

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

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

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

因此可以通过组合数公式推出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

 

NC17134 Symmetric Matrix(数学+dp)

原文:https://www.cnblogs.com/ctyakwf/p/13253580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!