Description

有一种图形叫做五角形圈。一个五角形圈的中心有1个由n个顶点和n条边组成的圈。

在中心的这个n边圈的每一条边同一时候也是某一个五角形的一条边,一共同拥有n个不同的五角形。这些五角形仅仅在五角形圈的中心的圈上有公共的顶点。如图0所看到的是一个4-五角形圈。

如今给定一个n五角形圈。你的任务就是求出n五角形圈的不同生成树的数目。还记得什么是图的生成树吗?一个图的生成树是保留原图的全部顶点以及顶点的数目减去一这么多条边,从而生成的一棵树。

注意:在给定的n五角形圈中全部顶点均视为不同的顶点。

Input

输入包括多组測试数据。

第一行包括一个正整数T,表示測试数据数目。每组測试数据包括一个整数n( 2<=N<=100),代表你须要求解的五角形圈中心的边数。

Output

对每一组測试数据,输出一行包括一个整数x。表示n五角形圈的生成树数目模2007之后的结果。

Sample Input

1

2

Sample Output

40

HINT

Source

直接Matrix-tree定理就好了

也能够用组合数学/DP来做

关于组合数学能够看PoPoQQQ的blog

果然还是矩阵树好想…

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 1010
#define P 2007
using namespace std;
int A[MAXN][MAXN],D[MAXN][MAXN],C[MAXN][MAXN];
int n,top;
int T;
int calc(int size)
{
for (int i=1;i<size;i++)
for (int j=1;j<size;j++)
C[i][j]=(C[i][j]+P)%P;
int ret=1;
for (int i=1;i<size;i++)
{
for (int j=i+1;j<size;j++)
{
int a=C[i][i],b=C[j][i];
while (b)
{
int temp=a/b;a%=b;swap(a,b);
for (int k=i;k<size;k++) C[i][k]=(C[i][k]-temp*C[j][k])%P;
for (int k=i;k<size;k++) swap(C[i][k],C[j][k]);
ret=-ret;
}
}
if (!C[i][i]) return 0;
ret=ret*C[i][i]%P;
}
return (ret+P)%P;
}
int main()
{
scanf("%d",&T);
while (T--)
{
memset(A,0,sizeof(A));memset(D,0,sizeof(D));
scanf("%d",&n);
top=n;
for (int i=1;i<=n;i++)
{
int u=i,v=i+1>n?1:i+1;
A[u][top+1]++;A[top+1][u]++;D[u][u]++;D[top+1][top+1]++;
A[top+1][top+2]++;A[top+2][top+1]++;D[top+1][top+1]++;D[top+2][top+2]++;
A[top+2][top+3]++;A[top+3][top+2]++;D[top+2][top+2]++;D[top+3][top+3]++;
A[top+3][v]++;A[v][top+3]++;D[top+3][top+3]++;D[v][v]++;
top+=3;
A[u][v]++;A[v][u]++;D[u][u]++;D[v][v]++;
}
for (int i=1;i<=top;i++)
for (int j=1;j<=top;j++)
C[i][j]=D[i][j]-A[i][j];
cout<<calc(top)<<endl;
}
}

【中山市选2010】【BZOJ2467】生成树的更多相关文章

  1. [bzoj2467][中山市选2010]生成树_快速幂

    生成树 bzoj-2467 中山市选2010 题目大意:题目链接 注释:略. 想法:首先,考虑生成树的性质.每两个点之间有且只有一条路径.我们将每个五边形的5条边分为外面的4条边和内部的一条边,在此简 ...

  2. BZOJ 2467: [中山市选2010]生成树 [组合计数]

    2467: [中山市选2010]生成树 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 638  Solved: 453[Submit][Status][ ...

  3. BZOJ_2467_[中山市选2010]生成树_数学

    BZOJ_2467_[中山市选2010]生成树_数学 [Submit][Status][Discuss] Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成 ...

  4. bzoj 2468: [中山市选2010]三核苷酸

    2468: [中山市选2010]三核苷酸 Description 三核苷酸是组成DNA序列的基本片段.具体来说,核苷酸一共有4种,分别用’A’,’G’,’C’,’T’来表示.而三核苷酸就是由3个核苷酸 ...

  5. bzoj2467: [中山市选2010]生成树

    Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...

  6. [BZOJ2467] [中山市选2010] 生成树 (排列组合)

    Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...

  7. 【bzoj2467】[中山市选2010]生成树 矩阵树定理

    题目描述 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈 ...

  8. 2019.01.02 bzoj2467: [中山市选2010]生成树(矩阵树定理)

    传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> # ...

  9. BZOJ 2467: [中山市选2010]生成树

    有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有公共的 ...

随机推荐

  1. spring是怎样管理mybatis的及注入mybatis mapper bean的

    1.spring启动mybatis的两个重要类:SqlSessionFactoryBean和MapperFactoryBean,这两个类都是org.mybatis.spring jar包的. 是用来启 ...

  2. HDU 3003

    找规律吧.可以快速幂模 #include <iostream> #include <cstdio> using namespace std; __int64 Power(__i ...

  3. HorizontalDragLayout-模仿QQclient的Item滑动删除

    首先感谢http://blog.csdn.net/lmj623565791/article/details/46858663hongyang的文章.之前看过ViewDragHelper类也读过一些de ...

  4. [IOS]mac以太网连接

    今天玩了一下苹果一体机.感觉还是蛮不错的,只是.就是用以太网连接的时候遇到了一点问题.用这篇文章记录一下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...

  5. Project Euler:Problem 37 Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...

  6. hdu(2846)Repository

    Problem Description When you go shopping, you can search in repository for avalible merchandises by ...

  7. angularjs1-3,工具方法,bootstrap,多个module,引入jquery

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. ES内存持续上升问题定位

      https://discuss.elastic.co/t/memory-usage-of-the-machine-with-es-is-continuously-increasing/23537/ ...

  9. ROS-Gazebo-turtlebot3仿真

    前言:Gazebo是一款强大的3D仿真器,支持机器人开发所需的机器人.传感器和环境模型,并且通过搭载的物理引擎可以得到逼真的仿真结果.即便Gazebo是一款开源仿真器,却具有高水准的仿真性能,因此在机 ...

  10. Centos7 minimal 系列之Redis集群搭建(六)

    一.redis安装 借鉴上篇博客:http://www.cnblogs.com/WJ--NET/p/8176071.html 二.集群搭建 2.1.创建文件夹 mkdir redis_cluster ...