zoukankan      html  css  js  c++  java
  • 【BZOJ1002】【FJOI2007】轮状病毒(生成树计数)

    1002: [FJOI2007]轮状病毒

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 1766  Solved: 946
    [Submit][Status]

    Description

     给定n(N<=100),编程计算有多少个不同的n轮状病毒。

    Input

    第一行有1个正整数n。

    Output

    将编程计算出的不同的n轮状病毒数输出

    Sample Input

    3

    Sample Output

    16

    HINT

     

    Source

    分析:从图中可以很容易看出,答案就是求给定图的生成树个数。本菜蒟蒻,想不出好办法……然后只能去翻2007周冬的集训队论文(orz周冬大神又一次拯救蒟蒻了……),就是讲生成树计数的。

    题解:求无向图的生成树个数:先求无向图的基尔霍夫矩阵

    如n=4时候(默认中间红点为1,其他顺时针2~n+1)

    3  -1  -1  -1  -1

    -1  3  -1  0  -1

    -1  -1   3  -1  0

    -1  0  -1  3  -1

    -1  -1  0  -1  3

    这个矩阵的与邻接矩阵很相似,两点之间有边用-1表示,没有就用0表示,对于每个(i,i),i∈[1,n+1]对应的位置表示图中i点的度数

    然后再任意删去基尔霍夫矩阵的任意第K行和第K列(为了方便删最后一行和最后一列的),对剩下的n*n矩阵当作n阶的行列式求解

    注意:要用高精度(突然想转python了……TAT)

    ————————————————————————————————————————————————————————————————————

    解n阶行列式:就是高斯消元将n阶矩阵变成上三角形式,det就是主对角线的乘积

            

          3  -1  -1  -1  

          -1  3  -1  0  

     |A|=   -1  -1   3  -1  

          -1  0  -1  3

    求解它就是先把第一行第一列系数化为1(第一行同时除以3),然后把第一行与后面相加减消去后面每行的第一列(变为0);然后依次类推…… 

  • 相关阅读:
    bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋
    bzoj千题计划173:bzoj1257: [CQOI2007]余数之和sum
    bzoj千题计划172:bzoj1192: [HNOI2006]鬼谷子的钱袋
    bzoj千题计划171:bzoj2456: mode
    bzoj千题计划170:bzoj1968: [Ahoi2005]COMMON 约数研究
    bzoj千题计划169:bzoj2463: [中山市选2009]谁能赢呢?
    bzoj千题计划168:bzoj3513: [MUTC2013]idiots
    oracle 11g RAC 的一些基本概念(四)
    fdisk用法(转载)
    Oracle 11g 新特性 -- Oracle Restart 说明(转载)
  • 原文地址:https://www.cnblogs.com/wmrv587/p/3488373.html
Copyright © 2011-2022 走看看