1. 程式人生 > >【矩陣樹定理+線代基礎】HDU6420 Rikka with Spanning Tree

【矩陣樹定理+線代基礎】HDU6420 Rikka with Spanning Tree

【前言】
當初多校的時候寫了這題,後面改了兩天愣是沒過,於是坑了。
今天wyl在寫矩陣樹,突然想起來有這題,於是就過了。

【題目】
原題地址
給定一個長度為 n n 的序列 a i

a_i ,定義 b i b_i a a 的字首和。現在有一幅 b
n b_n
個點的圖,其中編號在 ( b i 1
, b i ] (b_{i-1},b_i]
之間的點兩兩有連邊。除此之外還有 m m 條邊,求這幅圖的生成樹個數。
n , m 200 , a i 1 0 6 n,m\leq 200,a_i\leq 10^6

【解題思路】
一道需要一定線代基礎的矩陣樹定理題。

生成樹個數我們肯定是考慮矩陣樹定理的。由於塊間連邊只有 200 200 條,而塊個數也只有 200 200 個,我們可以考慮只保留每個塊的點以及那些有塊間連邊的點,然後矩陣樹一波。於是我們先把這個行列式的形式寫出來然後觀察一下我們怎麼能縮小這個行列式。

下面我們稱與塊外有連邊的點為“關鍵點”,僅在塊內連邊的點為“自閉點”。
那麼行列式大概是長這個樣子的,其中 S i S_i 表示第 i i 個塊內部連邊, 0 0 的位置可能實際上有一些 1 -1 .
[ S 1 0 0 0 0 S 2 0 0 0 0 0 0 0 0 S n ] \begin{bmatrix} S_1 & 0 & 0 & 0\\ 0 & S_2 & 0 & 0\\ 0 & 0 & \ddots & 0\\ 0 & 0 & 0 & S_n \end{bmatrix}
那麼我們對於每個塊的兩行,交換這兩行不會影響到其他塊,我們就可以對每個塊的形態進行考慮(以下設 n n 為塊內點數, c 1 c_1 為關鍵點數, c 2 c_2 為自閉點個數,顯然 n = c 1 + c 2 n=c_1+c_2

首先我們將所有點重標號,將關鍵點放到前面:
[ ? ? 1 1 1 ? ? 1 1 1 1 1 n 1 1 1 1 1 1 n 1 1 1 1 1 1 1 1 n 1 ] \begin{bmatrix} ? & ? & -1 & -1 & \cdots &-1\\ ? & ? & -1 & -1 &\cdots & -1\\ -1 & -1 & n-1 & -1 &\cdots & -1\\ -1& -1 & -1 & n-1 & \cdots &-1\\ \vdots & \vdots &\vdots &\vdots & \ddots &-1\\ -1 & -1 &-1 &-1 & -1 & n-1 \end{bmatrix}
嗯,左上角一塊我們暫時不用管它,反正最終我們是可以計算出來的。

發現自閉點一側的行列式形式高度統一,於是我們讓所有行都減去第 c 1 + 1 c_1+1 行的數,行列式值不變:
[ ? ? n 0 0 ? ? n 0 0 1 1 n 1 1 1 0 0 n n 0 0 0 0 n 0 0 n ] \begin{bmatrix} ? & ? & -n & 0 & \cdots &0\\ ? & ? & -n & 0 &\cdots & 0\\ -1 & -1 & n-1 & -1 &\cdots & -1\\ 0& 0 & -n & n & \cdots &0\\ \vdots & \vdots &\vdots &\vdots & \ddots &0\\ 0 & 0 & -n &0 & 0 & n \end{bmatrix}

相關推薦

矩陣定理+基礎HDU6420 Rikka with Spanning Tree

【前言】 當初多校的時候寫了這題,後面改了兩天愣是沒過,於是坑了。 今天wyl在寫矩陣樹,突然想起來有這題,於是就過了。 【題目】 原題地址 給定一個長度為 n

BZOJ3534 [Sdoi2014]重建 矩陣定理

urn %d iostream 位數 == != swap IT 接下來 題目 T國有N個城市,用若幹雙向道路連接。一對城市之間至多存在一條道路。 在一次洪水之後,一些道路受損無法通行。雖然已經有人開始調查道路的損毀情況,但直到現在幾乎沒有消息傳回。 辛運的是,此前T國政府

BZOJ4894 天賦 矩陣定理

.com space sizeof make spa long long HR define AI 題目鏈接 BZOJ4894 題解 雙倍經驗P5297 題解 #include<iostream> #include<cstring> #include

[JZOJ5899]NOIP2018模擬10.6資源運輸矩陣定理圖論

Description 給定一個n個點,m條邊的帶權無向圖。 定義這個圖的一個生成樹的權值為生成樹上邊權的乘積。 求所有生成樹權值的平均值,答案對998244353取模。 2<=n<=300,n-1<=m<=1000 Solution 平均值=和/總數

[bzoj1002][FJOI2007]輪狀病毒高精度矩陣定理

【題目描述】Description  輪狀病毒有很多變種,所有輪狀病毒的變種都是從一個輪狀基產生的。一個N輪狀基由圓環上N個不同的基原子和圓心處一個核原子構成的,2個原子之間的邊表示這2個原子之間的資訊通道。如下圖所示  N輪狀病毒的產生規律是在一個N輪狀基中刪去若干條邊,使

BZOJ 1002 [FJOI2007]輪狀病毒 矩陣定理留坑

【知識背景:線性代數】 【NOIP後再看這道題…現在直接看了最終答案然後水過去了..orz..】 【向大佬低頭…蒟蒻瑟瑟發抖..】 要做這道題首先要知道矩陣樹定理。 1、G的度數矩陣D[G

BZOJP3534Sdoi2014重建題解矩陣定理

dt學了矩陣樹定理 鄰接矩陣中的的權可以不是1,而是其他權值,比如概率 這樣計算出來的就是所有生成樹的概率和,即 但是這樣不對…… 生成一顆生成樹T的概率應該是 接著就是神奇的轉換 設G要求的矩陣,P是給出的矩陣 我們令 對G計算n-1階主子式,即有 那麼把它

BZOJ2467[中山市選2010]生成樹 矩陣定理

n) 生成樹 scan ans 中山市選 work font 以及 pri 【BZOJ2467】[中山市選2010]生成樹 Description 有一種圖形叫做五角形圈。一個五角形圈的中心有1個由n個頂點和n條邊組成的圈。在中心的這個n邊圈的每一條邊同時也是某一個

bzoj5133[CodePlus2017年12月]白金元首與獨舞 並查集+矩陣定理

oid lin 因此 algorithm fault str typedef 12月 zoj 題目描述 給定一個 $n\times m$ 的方格圖,每個格子有 ↑、↓、←、→,表示從該格子能夠走到相鄰的哪個格子。有一些格子是空著的,

jzoj5899 NOIP2018模擬10.6資源運輸 (矩陣定理

描述 n<=300,給定有權邊,求生成樹大小和所有生成樹邊權乘積和。 要點 基爾霍夫矩陣: c [

XSY1537五顏六色的幻想鄉(矩陣定理+高斯消元+拉格朗日插值)

題意:有nn個點,mm條有顏色的邊,顏色為紅色藍色和綠色,對於所有滿足r+b+g=n−1r+b+g=n−1的三元組(r,b,g)(r,b,g),求恰有rr條紅色的邊,bb條藍色的邊,gg條綠色的邊的生成樹個數。 題解: 生成樹計數基本上就是矩陣樹定理啦。

模板矩陣定理

對了有一道假題目 解析: 先明確幾個定義。 對於一個圖GGG,定義其度數矩陣為D[G]D[G]D[G],為一個n∗nn*nn∗n的矩陣,滿足當i!=ji!=ji!=j的時候,di,j=0d_{i,j

2018.09.22JSOI2008BZOJ1016最小生成樹計數(矩陣定理)(並查集)

傳送門 解析: 好的這是一道需要數學推理的矩陣樹題目。 首先我們考慮一個問題。 前置定理 我們先隨便做一棵最小生成樹。 重要定理:那麼在這棵生成樹中如果權值為www的邊有ttt條,那麼在所有最小生成樹中,權值為www的邊都有kkk條。 證明如下: 考慮在這棵

jzoj 5899. NOIP2018模擬10.6資源運輸 矩陣定理

Description Input Output Sample Input 3 2 1 3 5 2 1 6 Sample Output 30 樣例說明: 顯然m=n-1時,只有一種選擇方法,優秀程

LOJ#6072蘋果樹(矩陣定理,折半搜尋,容斥)

【LOJ#6072】蘋果樹(矩陣樹定理,折半搜尋,容斥) 題面 LOJ 題解 emmmm,這題似乎貓講過一次。。。 顯然先\(meet-in-the-middle\)搜尋一下對於每個有用的蘋果數量,滿足權值小於\(lim\)的方案數 ,那麼只需要考慮它們構成生成樹的方案數就好了。 顯然有用的可以和所有

LOJ#6072蘋果樹(矩陣定理,折半搜索,容斥)

折半搜索 sum 蘋果樹 矩陣 pan void 滿足 還需要 oid 【LOJ#6072】蘋果樹(矩陣樹定理,折半搜索,容斥) 題面 LOJ 題解 emmmm,這題似乎貓講過一次。。。 顯然先\(meet-in-the-middle\)搜索一下對於每個有用的蘋果數量,滿足

算法設計與分析基礎11、廣度優先遍歷

append path str src http adt ise uil tor package cn.xf.algorithm.ch03; import java.util.ArrayDeque; import java.util.Iterator; import j

算法設計與分析基礎12、插入排序

排序 org vision out sys pac data image 技術 package cn.xf.algorithm.ch04; import org.junit.Test; /** * * * . * @author xiaof * @ver

算法設計與分析基礎14、快速排序

元素 right get class ima div true cnblogs param package cn.xf.algorithm.ch04; import java.util.ArrayList; import java.util.Arrays; import

算法設計與分析基礎15、最近對問題

filename com 算法設計 2個 junit 開始 替換 lis 之間 1、由於Java中沒有存放單個鍵值對的類型使用起來不是很方便 package cn.xf.util; /** * * 功能:相當於一個key value * @author xi