【bzoj2467】[中山市选2010]生成树 矩阵树定理
题目描述

输入
输入包含多组测试数据。第一行包含一个正整数T,表示测试数据数目。每组测试数据包含一个整数n( 2<=N<=100),代表你需要求解的五角形圈中心的边数。
输出
对每一组测试数据,输出一行包含一个整数x,表示n五角形圈的生成树数目模2007之后的结果。
样例输入
1
2
样例输出
40
题解
矩阵树定理
看到无向图生成树个数,直接裸上矩阵树定理就好了(好像本题还有组合数学法)。
需要注意的是由于2007不是质数,因此需要辗转相除。
另外当n=2时由于某些特殊原因需要特判。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int mod = 2007;
int a[410][410];
int main()
{
int T;
scanf("%d" , &T);
while(T -- )
{
memset(a , 0 , sizeof(a));
int n , i , j , k , t , ans = 1 , d = 0;
scanf("%d" , &n) , n <<= 2;
if(n == 8)
{
puts("40");
continue;
}
for(i = 1 ; i <= n ; i ++ )
{
a[i][(i + 1) % n] = a[(i + 1) % n][i] = -1 , a[i][i] = 2;
if(i % 4 == 1) a[i][i] = 4 , a[i][(i + 4) % n] = a[(i + 4) % n][i] = -1;
}
for(i = 1 ; i < n ; i ++ )
{
for(j = i ; j < n ; j ++ )
if(a[j][i])
break;
if(j == n) continue;
if(j != i)
{
d ^= 1;
for(k = i ; k < n ; k ++ ) swap(a[i][k] , a[j][k]);
}
for(j = i + 1 ; j < n ; j ++ )
{
while(a[j][i])
{
t = a[j][i] / a[i][i];
for(k = i ; k < n ; k ++ ) a[j][k] = (a[j][k] - a[i][k] * t % mod + mod) % mod;
if(!a[j][i]) break;
d ^= 1;
for(k = i ; k < n ; k ++ ) swap(a[i][k] , a[j][k]);
}
}
}
for(i = 1 ; i < n ; i ++ ) ans = ans * a[i][i] % mod;
if(d) ans = (mod - ans) % mod;
printf("%d\n" , ans);
}
return 0;
}
【bzoj2467】[中山市选2010]生成树 矩阵树定理的更多相关文章
- [bzoj2467][中山市选2010]生成树_快速幂
生成树 bzoj-2467 中山市选2010 题目大意:题目链接 注释:略. 想法:首先,考虑生成树的性质.每两个点之间有且只有一条路径.我们将每个五边形的5条边分为外面的4条边和内部的一条边,在此简 ...
- 2019.01.02 bzoj2467: [中山市选2010]生成树(矩阵树定理)
传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> # ...
- bzoj2467: [中山市选2010]生成树
Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...
- [BZOJ2467] [中山市选2010] 生成树 (排列组合)
Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角 ...
- BZOJ 2467: [中山市选2010]生成树 [组合计数]
2467: [中山市选2010]生成树 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 638 Solved: 453[Submit][Status][ ...
- BZOJ_2467_[中山市选2010]生成树_数学
BZOJ_2467_[中山市选2010]生成树_数学 [Submit][Status][Discuss] Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成 ...
- BZOJ 2467: [中山市选2010]生成树(矩阵树定理+取模高斯消元)
http://www.lydsy.com/JudgeOnline/problem.php?id=2467 题意: 思路:要用矩阵树定理不难,但是这里的话需要取模,所以是需要计算逆元的,但是用辗转相减会 ...
- BZOJ 2467: [中山市选2010]生成树
有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有公共的 ...
- BZOJ 2467 [中山市选2010]生成树(组合数学)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2467 [题目大意] 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边 ...
随机推荐
- Java 设计模式之中介者模式
本文继续23种设计模式系列之中介者模式. 定义 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 角色 抽象中介者: ...
- UVA11090 Going in Cycle (二分+判负环)
二分法+spfa判负环.如果存在一个环sum(wi)<k*x,i=0,1,2...,k,那么每条边减去x以后会形成负环.因此可用spfa来判负环. 一般spfa判负环dfs最快,用stack次之 ...
- 241个jquery插件—jquery插件大全
jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team. jQuery是继prototype之后又一个优秀的Javascrīpt框架.其经典 ...
- 【转】Java8学习笔记(1) -- 从函数式接口说起
http://blog.csdn.net/zxhoo/article/details/38349011 函数式接口 理解Functional Interface(函数式接口,以下简称FI)是学习Jav ...
- Java获取yml里面的配置
#yml文件配置systemPath: #档案系统地址 dossier: http://127.0.0.1:8088/ //调用说明 配置文件里必须包含节点 否则项目无法启动 @Value(" ...
- java基础—对象转型
一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...
- matplot绘图(五)
b3D图形绘制 # 导包:from mpl_toolkits.mplot3d.axes3d import Axes3Dimport matplotlib.pyplot as plt%matplotli ...
- select2插件+ajax笔记
目录 手册 思路 1. 如果是自己写的ajax这样就可以了. html里 控制器里 2. 如果是ecshop里,需要改写call方法为JQuery的ajax方法,才可以select2需要JQuery支 ...
- 3.layhm框架的流程与Boot类启动
思路 在项目根目录里新建好对应的目录 cmd里在项目根目录里,composer init初使化,一路回车 把要自动加载的文件和目录定在composer.json文件的autoload里,file是自动 ...
- python 类的封装/property类型/和对象的绑定与非绑定方法
目录 类的封装 类的property特性 类与对象的绑定方法与非绑定方法 类的封装 封装: 就是打包,封起来,装起来,把你丢进袋子里,然后用绳子把袋子绑紧,你还能拿到袋子里的那个人吗? 1.隐藏属性和 ...