题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031

矩阵树定理的模板题(第一次的矩阵树定理~);

有点细节,放在注释里了。

代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. typedef long long ll;
  6. int const mod=1e9;
  7. int n,m,a[][],d[][],sid[][],tot,num[][];
  8. ll ans=;
  9. void add(int x,int y)
  10. {
  11. d[x][x]++; d[y][y]++;
  12. sid[x][y]=; sid[y][x]=;
  13. }
  14. void gauss()
  15. {
  16. int fl=;
  17. for(int i=;i<=tot;i++)
  18. {
  19. int nw=i;//
  20. for(int j=i+;j<=tot;j++)
  21. if(a[j][i]>a[nw][i])nw=j;
  22. if(nw!=i)
  23. {
  24. fl^=;
  25. for(int j=i;j<=tot;j++)swap(a[i][j],a[nw][j]);
  26. }
  27. for(int j=i+;j<=tot;j++)//上三角而非对角线
  28. while(a[j][i])
  29. {
  30. ll tmp=a[i][i]/a[j][i];
  31. for(int k=i;k<=tot;k++)
  32. {
  33. ll tp=a[i][k]; a[i][k]=a[j][k];
  34. a[j][k]=((tp-a[j][k]*tmp)%mod+mod)%mod;
  35. }
  36. fl^=;
  37. }
  38. (ans*=a[i][i])%=mod;
  39. }
  40. if(fl)ans=-ans;
  41. ans=((ans%mod)+mod)%mod;
  42. }
  43. int main()
  44. {
  45. scanf("%d%d",&n,&m);
  46. char ch[][];
  47. for(int i=;i<=n;i++)
  48. {
  49. int nw=i%,pr=!nw;
  50. scanf("%s",ch[nw]+);
  51. for(int j=;j<=m;j++)
  52. {
  53. if(ch[nw][j]=='*')continue;//!!!
  54. tot++; num[nw][j]=tot;
  55. if(ch[nw][j-]=='.')add(tot,num[nw][j-]);
  56. if(ch[pr][j]=='.')add(tot,num[pr][j]);
  57. }
  58. }
  59. for(int i=;i<=tot;i++)
  60. for(int j=;j<=tot;j++)
  61. a[i][j]=(d[i][j]-sid[i][j]+mod)%mod;
  62. tot--;//
  63. gauss();
  64. printf("%lld",ans);
  65. return ;
  66. }

bzoj4031 [HEOI2015]小Z的房间——矩阵树定理的更多相关文章

  1. 【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理

    题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...

  2. [HEOI2015]小Z的房间(矩阵树定理学习笔记)

    题目描述 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. 你想要打通一 ...

  3. BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]

    http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...

  4. BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)

    背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...

  5. [HEOI2015] 小Z的房间 - 矩阵树定理

    #include <bits/stdc++.h> using namespace std; #define int long long const int N = 105; const i ...

  6. bzoj 4031: 小Z的房间 矩阵树定理

    bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...

  7. LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理

    问题描述 LG4111 题解 矩阵树定理板子题. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; #defin ...

  8. BZOJ4031 [HEOI2015]小Z的房间 【矩阵树定理 + 高斯消元】

    题目链接 BZOJ4031 题解 第一眼:这不裸的矩阵树定理么 第二眼:这个模\(10^9\)是什么鬼嘛QAQ 想尝试递归求行列式,发现这是\(O(n!)\)的.. 想上高斯消元,却又处理不了逆元这个 ...

  9. bzoj4031 [HEOI2015]小Z的房间

    Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...

随机推荐

  1. 配置Mysql审计

    mysql-audit.json:Mysql审计日志 插件下载地址: https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.4-725#f ...

  2. Jquery validate自定义验证

    http://www.runoob.com/jquery/jquery-plugin-validate.html addMethod(name,method,message)方法 参数 name 是添 ...

  3. npm run build 打包后,如何查看效果

    我们用vue-cli搭建的项目执行npm build后本地打开页面空白,如果才能查看npm run build之后的结果呢 首先我们看一下提示 Tip: built files are meant t ...

  4. IDEA常用插件记录

    让我们来记录一下常用的IDEA插件:(从其他博客中取了许多图片,出处见图片水印) 1.JRebel for IntelliJ 热部署神器2.Free MyBatis plugin 实现dao层方法与x ...

  5. jQuery调用WCF 说明

    在项目中用过一些WCF的技术这篇文章是对以前用过的一点东西的一个梳理 一,webconfig的配置除了一般的配置外,与WCF相关的配置如下 <system.serviceModel>    ...

  6. HDU 5458 Stability

    Stability Time Limit: 2000ms Memory Limit: 102400KB This problem will be judged on HDU. Original ID: ...

  7. Codeforces Round #364 (Div. 2),只有A与B

    A. Cards time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  8. bzoj 3173 [Tjoi2013]最长上升子序列 (treap模拟+lis)

    [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2213  Solved: 1119[Submit][Status] ...

  9. 【Intellij 】Intellij IDEA 添加jar包的三种方式

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于 ...

  10. 静态区间第k大(归并树)

    POJ 2104为例 思想: 利用归并排序的思想: 建树过程和归并排序类似,每个数列都是子树序列的合并与排序. 查询过程,如果所查询区间完全包含在当前区间中,则直接返回当前区间内小于所求数的元素个数, ...