牛客 樹(dfs序)

2022-05-28 15:21:11 字數 554 閱讀 8255

這題的思路很精妙,因為我們發現每個點有兩種選擇,一種是塗新的顏色,一種是塗原來出現的顏色

如果按樹形dp的方法做,很難做,因為無法判斷點之間的路徑以及存在的顏色關係。因此想到使用dfs序的方式,轉化成鏈式

這樣該節點塗色之前父親節點也被塗色。而新顏色可以隨便選,原來的顏色必須和父親節點的顏色一樣

#includeusing

namespace

std;

typedef

long

long

ll;const

int n=3e5+10

;const

int mod=1e9+7

;ll f[

330][330

];int

main()

f[0][0]=1

;

for(i=1;i<=n;i++)

}ll ans=0

;

for(i=1;i<=k;i++)

cout

return0;

}

view code

dfs序 線段樹

傳送門 現有一棵樹,有以下操作 1.節點x及其所有子孫顏色都變更為k。2.要求你回答節點x的顏色。初始所有點都沒有染色。input 第一行乙個整數t t 10 表示樣例組數。對於每個測試樣例 第一行乙個整數n n 5e4 表示樹的節點個數。接下來n行,每行兩個整數u,v 1 u,v n 表示樹中u的...

牛客 字典序 思維

題目大意 給出乙個長度為 n 的數列 a 構造 s i 是數列 a 去掉 a i 後的數列,現在需要對 s 排序,輸出排序後的結果 題目分析 一提到排序,可以試著寫一下 sort 的 cmp 然後剩下的就不用我們操心了 對於 cmp 函式,我們的目標是給出兩個位置 x 和 y 從而確定其相應的大小 ...

牛客 數獨挑戰 dfs

題目鏈結 1 暴力法 tle include using namespace std const int inf 0x3f3f3f3f typedef long long ll int e 10 10 int r 10 10 記錄該行 1 9是否出現 出現為 1 int c 10 10 int k ...