數學 JZOJ P3636 分叉

2021-08-15 06:21:49 字數 1160 閱讀 3395

description

給出一棵n 個點的樹,點的編號是1, 2,。。。,n。

對於3 個點,如果不存在一條簡單路徑同時經過a,b,c,那麼是乙個分叉。

統計不同分叉的數量。

樹 無環,連通的無向圖

簡單路徑 不重複經過同乙個點的路徑

input

第1 行,1 個整數n。接下來(n -1) 行,每行2 個整數ai,bi,表示點ai 和點bi 間有一條邊。

output

1 個整數,表示所求的值。

sample input

1 21 3

1 41 5

sample output

data constraint

• 對於30% 的資料,n <= 100;

• 對於50% 的資料,n <= 1000;

• 對於100% 的資料,1 <= n <= 10^5。

我們可以統計出每個節點的子樹大小

然後,可以換一種方法想:我們求出所有可能的c(n,3)-可以用簡單路徑連成的點=不可以的點

題目說沒有重複的情況出現,那麼對於乙個節點作「中轉站」的情況下,是存在有

然後我們每次換根,求下乙個節點可以求出的和

#include

#include

using namespace std;

int zs[200010],father[200010],last[400010],head[200010],next[400010],n,tot,a[200010],b[200010];

long long ans,num;

void insert(int

x,int

y)void find (intx)}

void dfs (int

x) a[x]=zs[x];

for (int i=head[x];i;i=next[i])

if (last[i]!=father[x])

}int main()

find(1);

dfs(1);

long long sum=(long long)n*(n-1)*(n-2)/6;

printf("%lld",sum-ans);

return

0;}

數學 組合數 Jzoj P4257 著色

description input 兩個整數n 1 n 8 k 1 k 1000 n代表他要塗的是書裡的第n張,k代表有k中不同的顏料選擇。這本書的內容請看後面!output 輸出乙個整數。代表合法的方案數。sample input 輸入1 2 2輸入2 5 3輸入3 7 3 sample outp...

bfs 狀壓 Jzoj P2121 分球

description input 輸入檔案包含多組資料。第一行為k,表示資料的總數。每組資料的第一行是n 3 n 7 第二行是2n個盒子的初始狀態。金球用a表示,銀球用b表示,空盒用空格表示。每兩組相鄰資料用空行隔開。output 對於每一組資料,若無解則輸出一行 1,若有解,輸出最少移動次數,相...

數學 三分 講解

原文 二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。但當函式是凸性函式時,二分法就無法適用,這時三分法就可以 大顯身手 如圖,類似二分的定義left和right,mid left right 2,midmid mid right 2 如果mid靠近極值點,則right midmid...