BZOJ3696 化合物 樹形DP 暴力

2022-05-20 16:07:22 字數 1203 閱讀 2909

首長noi慘跪,於是去念文化課了。現在,他面對一道化學題。

這題的**是因為在乙個奇怪的學校兩個化競黨在玩乙個奇怪的博弈論遊戲。這個遊戲很蛋疼,我相信你們也沒有興趣聽。

由於這個遊戲涉及博弈論,因此化競的同學就要求首長求乙個類似sg函式的值。

他們手中有一種非常神奇的化合物,它的分子由n個原子組成(不要在意乙個原子可能和及其多個原子成鍵這個細節)。這個分子構成乙個樹結構,1號分子為根。    若兩個原子i、j到它們的最近公共祖先的距離分別是li和lj,定義它們的aij值為:

aij=li  xor lj

題目要求對於每乙個k(k∈n),求出兩兩a值為k的原子對個數。

第一行乙個整數n。

接下來n-1行,每行乙個整數p,第新亍的整數表示第i個原子的父親為p。

從k=0開始,第k+1行輸出兩兩a值為k的原子對個數,輸出到第乙個不為零的數為止。31

112【資料規模與約定】

用h表示樹結構分子的最大深度。

n<=10^5,h<=500

題解:第一直覺是某種樹形dp,但是想不出來,看到h很小,感覺暴力可過,發現正解真的是暴力~

對於每一層,我們用f[i]表示當前子樹中深度為i的點的個數,然後我們用下一層的f'[j]和當前的f[i]來暴力更新答案ans[i^j],然後用f'[j]來更新f[i]就行了。

注意要輸出到第乙個為0的數,而不是輸出所有不為0的數。

隨手寫了一發rank1了什麼鬼~可能因為陣列開的比較小吧?

bzoj3696 化合物 樹形dp

化合物 bzoj 3696 題目大意 給你一棵樹,定義兩個點i j之間的a值是 dis i dis lca i,j xor dis j dis lca i,j 對所有的k in 1,n a值等於k的點對數量。注釋 1 le n le 10 5 1 le maxdis le 500 想法 說什麼異或意...

bzoj3696 化合物 樹形dp

題目描述 首長noi慘跪,於是去念文化課了。現在,他面對一道化學題。這題的 是因為在乙個奇怪的學校兩個化競黨在玩乙個奇怪的博弈論遊戲。這個遊戲很蛋疼,我相信你們也沒有興趣聽。由於這個遊戲涉及博弈論,因此化競的同學就要求首長求乙個類似sg函式的值。他們手中有一種非常神奇的化合物,它的分子由n個原子組成...

化合物相似性搜尋 RDKit 化合物相似性搜尋

基於python3和rdkit的化合物結構相似性搜尋 化合物相似性在化學資訊學和藥物發現中具有悠久的歷史,許多計算方法採用相似度測定來鑑定研究的新化合物。本例項通過計算分子的morgan指紋進行相似性比對。匯入依賴包 usr bin env python3 from rdkit.chem impor...