Codeforces 🎨 CF2183D2. Tree Coloring (Hard Version)
🔗 CF2183D2 Tree Coloring (Hard Version)
rating: 2066
Problem Statement
題目簡述
這是題目的 Hard Version。與 Easy Version 的區別在於:本題不僅要求求出最小的操作次數,還需要構造出具體的染色方案。
給定一棵 個節點、以 為根的有根樹。每次操作可以選擇一個白色節點集合 ,將其染黑。集合 需滿足:
- 集合內任意兩點之間沒有邊相連(即 為獨立集)。
- 集合內任意兩點到根節點的距離不同。
找出將整棵樹染黑所需的最少操作次數,並輸出每次操作所選擇的節點集合。
Constraints
約束條件
思路:貪心構造
根據 Easy Version 的分析,最小操作次數 受限於兩個下界:
- :同一層的節點必須不同色。
- :一個父節點 與其所有子節點互異,形成大小為 的集合,兩兩必須不同色。
所需的最少顏色數量 為兩個下界的最大值。
即為所需的最小顏色數。
此外,由於節點 的所有子節點必在同一層,故 ,進而 ,即 。
構造策略
我們採用由上到下 逐層貪心 的策略來構造,按深度 順序,逐層為節點染色。
- 對於第 層,節點集合為 ,大小 。
- 我們先分配 給這些節點。
此時分配後可以滿足層內互異,以及子節點間互異,僅剩下父節點與子節點同色的衝突。
衝突解決方案
檢查所有 ,找出衝突集合 。根據 的大小分類討論:
設這些衝突點當前分配的顏色(與其父節點顏色相同)為 。
由於父節點都在上一層,且上一層顏色互異,故 各不相同。
我們將這些衝突點的顏色進行 循環位移:
- 改染
- 改染
- 改染
移位後,與父節點的衝突可以解決,且層內元素依然使用這組顏色集合,僅分配對象改變,不破壞層內互異性。
設衝突點為 ,顏色為 (父節點也是 ),考慮兩種情況:
-
若顏色未用滿 ():
直接將 改染一個未使用的顏色,如 。 -
若顏色已用滿 ():
必須在同層中找另一個節點 ,滿足 ,將 和 的顏色交換。
存在性證明:為何一定能找到可交換的 ?
假設無法找到這樣的 ,即同層所有節點的父節點顏色都是 。又因為顏色已經用滿,此時父節點顏色為 的節點數量為 個。
這些父節點都在上一層 ,分兩種情況討論:
- 若這些父節點互不相同:則上一層有 個節點顏色都是 ,違反「同層不同色」。
- 若這些父節點是同一個節點 :則 有 個子節點。加上 自己,這個集合大小為 ,但我們計算 時已取了 ,產生矛盾。
綜上,必然存在一個 ,其父節點顏色不是 ,可以與 安全交換。
複雜度分析
- 時間複雜度:。
- 空間複雜度:。
Code
1 | from collections import deque, defaultdict |
寫在最後
PROMPT
masterpiece, best quality, high quality, good quality, 32K UHD, colorful, official art, illustration, in the style of fashion photography, dynamic, dynamic force picture, (Visual impact:1.2), impactful picture, extreme aesthetic, A shot with tension, sharp focus, The Ninth Art, depth of field, cinematic lighting, light particles, lens flare, movie perspective, (Tyndall Effect:1.4), light particles, light, shadow, scenery, temperate atmosphere, (artist:pigeon666:0.83), (Yomu:0.4), (remsrar:0.45), (quasarcake:0.3),
1girl, solo, Nijika Ijichi (ijichi nijika, bocchi the rock), brown eyes, blonde hair, long hair, very long hair, bangs, side ponytail, school uniform, white shirt, pleated skirt, long sleeves, bow, ahoge, sidelocks, outdoors, collared shirt, bowtie, black skirt, bag, red bow, red bowtie,
holding umbrella, transparent umbrella, rain, raining, night, wet street, puddle, reflection, glowing vending machine, backlighting, neon lights, urban scenery, wide shot, landscape, horizontal, looking at viewer, blush








