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 ...
随机推荐
- 3dmax快速实现一个逼真地毯效果
3dsmax怎么制作逼真的毛绒地毯模型?3dsmax中想要中想要建模长方形的毛绒地毯,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下: 1.在创建面板-扩展基本体下选择切角长方体 2. ...
- vue 锚点定位
vue 锚点定位 <template> <div class="details"> <div class="wrapper w"& ...
- jq滚动条美化
https://github.com/inuyaksa/jquery.nicescroll(插件地址) https://blog.csdn.net/zyy_0725/article/details/8 ...
- keepalived + nginx 实现高可用
原理 nginx 可以实现负载均衡,但 nginx 自身存在单点故障的问题,这时候最先想到的就是 keepalived,可以解决单点故障的问题 由于没有使用 lvs,所以这里 nginx 之间不存在负 ...
- Python3+Gurobi使用教程(一)
Gurobi使用教程 1.Gurobi使用的一般框架 from gurobipy import * try: m=Model('modelname') except GurobiError: prin ...
- JavaScript系列——数组元素左右移动N位算法实现
引言 在自己刚刚毕业不久的时候,去了一家公司面试,面试官现场考了我这道题,我记忆深刻,当时没有想到思路,毫无疑问被面试官当成菜鸟了.最近刚好在研究数组的各种算法实现,就想到这道题,可以拿来实现一下,纪 ...
- 洛谷 P4147 玉蟾宫 (最大子矩形问题)
这道题用到了悬线法,非常牛逼,可以看这个论文. https://blog.csdn.net/twtsa/article/details/8120269 #include<cstdio> # ...
- 紫书 例题 11-13 UVa 10735(混合图的欧拉回路)(最大流)
这道题写了两个多小时-- 首先讲一下怎么建模 我们的目的是让所有点的出度等于入度 那么我们可以把点分为两部分, 一部分出度大于入度, 一部分入度大于出度 那么显然, 按照书里的思路,将边方向后,就相当 ...
- Camera Calibration 相机标定:Opencv应用方法
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49427383 Opencv中Camer ...
- Mysql 日期型,索引查询的问题
问题: 表中,有一个日期字段WorkDate(Date YYYY-MM-DD格式),现在我把它建成了索引,在检索条件时,WorkDate='YYYY-MM-DD' 时,用EXPLAIN分析,能看到使用 ...