UvaLive 6600 Spanning trees in a secure lock pattern 矩阵行列式
链接:https://icpcarchive.ecs.baylor.edu/index.php?
option=com_onlinejudge&Itemid=8&page=show_problem&problem=4611
题意:给一个N*N个点的矩阵(N<=6)。每一个点仅仅能和周围八个点相连,问有多少种生成树的方式。
思路:题里给的非常明确。就是列一个每一个点的边的矩阵,然后求子矩阵的行列式就能够了,由于N仅仅有6,所以打表就能够了。
打表代码:
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ctype.h>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#define eps 1e-8
#define INF 0x7fffffff
#define PI acos(-1.0)
#define seed 31//131,1313
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
#define MOD 1000
#define maxn 40
#define maxm 40
struct Matrix
{
int n,m;
double a[maxn][maxm];
void change(int c,int d)
{
n=c;
m=d;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
a[i][j]=0;
}
void Copy(const Matrix &x)
{
n=x.n;
m=x.m;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
a[i][j]=x.a[i][j];
}
void build(int n)
{
change(n*n,n*n);
for(int i=0; i<n*n; i++)
{
if(i%n!=0)
{
a[i][i-1]=-1;
a[i-1][i]=-1;
a[i][i]++;
a[i-1][i-1]++;
}
if(i%n!=0&&i/n!=0)
{
a[i][i-n-1]=-1;
a[i-n-1][i]=-1;
a[i][i]++;
a[i-n-1][i-n-1]++;
}
if(i%n!=0&&i/n!=n-1)
{
a[i][i+n-1]=-1;
a[i+n-1][i]=-1;
a[i][i]++;
a[i+n-1][i+n-1]++;
}
if(i/n!=n-1)
{
a[i][i+n]=-1;
a[i+n][i]=-1;
a[i][i]++;
a[i+n][i+n]++;
}
}
}
double det()
{
for(int i=1; i<n; i++)
{
for(int j=0; j<i; j++)
if(a[i][j]!=0)
{
for(int k=j+1; k<m; k++)
a[i][k]-=(a[j][k]*a[i][j]/a[j][j]);
a[i][j]=0;
}
}
double ans=1;
for(int i=0; i<n-1; i++)
ans*=a[i][i];
return ans;
}
};
int main()
{
int t;
scanf("%d",&t);
Matrix A;
A.build(t);
printf("%.0f\n",A.det());
return 0;
}
AC代码:
int main()
{
char ss[10][40]={"1","16","17745","1064918960","3271331573452806","504061943351319050000000"};
int T;
scanf("%d",&T);
while(T--)
{
int a;
scanf("%d",&a);
puts(ss[a-1]);
}
}
UvaLive 6600 Spanning trees in a secure lock pattern 矩阵行列式的更多相关文章
- 【2018 ICPC亚洲区域赛徐州站 A】Rikka with Minimum Spanning Trees(求最小生成树个数与总权值的乘积)
Hello everyone! I am your old friend Rikka. Welcome to Xuzhou. This is the first problem, which is a ...
- 多线程程序设计学习(7)read-write lock pattern
Read-Write Lock Pattern[读写]一:Read-Write Lock Pattern的参与者--->读写锁--->数据(共享资源)--->读线程--->写线 ...
- Cs Round#54 D Spanning Trees
题意:构造一张N个结点无重边.无自环的无向图.使得其最小生成树和最大生成树共享K条边. 样例一很具有启发性: 当K!=0时,我们可以先构造出一条链,链的长度为n-k的链,作为最小生成树的一部分,之后由 ...
- Minimum Spanning Trees
Kruskal’s algorithm always union the lightest link if two sets haven't been linked typedef struct { ...
- 【CodeChef EDGEST】Edges in Spanning Trees(树链剖分+树上启发式合并)
点此看题面 大致题意: 给你两棵\(n\)个点的树,对于第一棵树中的每条边\(e_1\),求存在多少条第二棵树中的边\(e_2\),使得第一棵树删掉\(e_1\)加上\(e_2\).第二棵树删掉\(e ...
- Gym102012A Rikka with Minimum Spanning Trees
题意 \(T\) 组数据,每组数据给定一个 \(n\) 个点,\(m\) 条边,可能含有重边自环的图,求出最小生成树的个数与边权和的乘积,对 \(10^9+7\) 取模. \(\texttt{Data ...
- 【C++设计模式】单件类与DCLP(Double Check Lock Pattern)的风险
[单件类] 保证只能有一个实例化对象,并提供全局的访问入口. [设计注意事项] 1.阻止所有实例化的方法: private 修饰构造函数,赋值构造函数,赋值拷贝函数. 2.定义单实例化对象的方法: a ...
- Android Lock Pattern 图案解锁
参考链接:http://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html http://blog.csdn.net/way_ping ...
- CF917D. Stranger Trees & TopCoder13369. TreeDistance(变元矩阵树定理+高斯消元)
题目链接 CF917D:https://codeforces.com/problemset/problem/917/D TopCoder13369:https://community.topcoder ...
随机推荐
- ActiveMQ学习笔记(6)----ActiveMQ整合Spring开发
1. 添加依赖 spring 提供了对JMS的支持,需要添加Spring支持jms的包和Spring的核心包,如下: <dependency> <groupId>org.apa ...
- SpringCloud学习笔记(7)----Spring Cloud Netflix之负载均衡-Ribbon的深入理解
1. 注解@LoadBalanced 作用:识别应用名称,并进行负载均衡. 2. 入口类:LoadBalancerAutoConfiguration 说明:类头上的注解可以知道Ribbon 实现的负载 ...
- HitHub使用
GitHub是个免费的开源仓库,个人及组织可以将源代码上传,既可以让别人参与到自己的项目中,也可以学习与参与到他人的项目中去.免费的GitHub账号的代码仓库(repository)都是公开的,任何人 ...
- django框架-Admin管理站点搭建
在django框架中,admin基本上算是已经写好了的,拿过来进行简单的处理即可以使用的,相对于flask来说已经是相当的便捷了. 在使用中,步骤如下: 1.管理界面本地化:即将英文标题等的变成中文, ...
- windows系统关闭端口占用进程
1.查找端口占用进程ID netstat -ano|findstr " 2.通过进程ID查找进程名 tasklist |findstr " 3.杀死进程(指定进程ID或进程名) t ...
- HDU 4069 数独
好久没做题了,建图搞了好久…… 然后,判是否有多解的时候会把原来的答案覆盖掉…… 这里没注意,弄了一下午…… 代码: #include <iostream> #include <cs ...
- C语言计算字符串数组中每个字符串出现的个数
unsigned int str_num(char *str[], int num[], int len) { int i, j; int count; int flag[len]; ; i < ...
- Qt之图形(绘制漂亮的圆弧)
简述 综合前面对二维绘图的介绍,想必我们对一些基本绘图有了深入的了解,下面我们来实现一些漂亮的图形绘制. 简述 圆形 效果 源码 弧形 效果 源码 文本 效果 源码 旋转 效果 源码 圆形 经常地,我 ...
- <<Python基础教程>>学习笔记 | 第12章 | 图形用户界面
Python支持的工具包非常多.但没有一个被觉得标准的工具包.用户选择的自由度大些.本章主要介绍最成熟的跨平台工具包wxPython.官方文档: http://wxpython.org/ ------ ...
- 日期格式,Popup的使用方法,RenderTransform与LayoutTransform的区别
1.画个笑脸给大家娱乐一下: <Canvas Width="200" Height="180" VerticalAlignment="Cente ...