首先,每個葉子節點都要被至少乙個小隊控制,
則貪心地放置小隊,
放置之後沒被覆蓋的點跟屬於控制範圍的點無關,
又屬於新的「葉子」,繼續遞迴。
如何貪心地放置?
對於每乙個點,我們求出離它最遠的沒被覆蓋的點,
若距離超過k-它離最近的小隊的距離,
則必定放置小隊,
並把離它距離小於等於k的父親標記,值為離它距離。
#includeusing namespace std;
const int n=200006;
int n,t,t1,t2,k,cnt=0,ans=0,f[n],dis[n],head[n];
//f[x]:x的父親,dis[x]:x到最近的小隊的距離
struct edgee[n<<1];
inline void add(int u,int v)
inline int read()
while(ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+(ch-48),ch=getchar();
return f*t;
}int dfs(int x)
}if(dis[x]&&dis[x]>=maxa) maxa=0;
if(x==1&&dis[x]return maxa;
}int main()
題解 將軍令
這道題我看到有人打了樹形 dp 我當時想,每種情況都要討論,20 的dp方程,那位神仙是給某主播打賞了10萬後氣急敗壞了嗎?有的時候,可以貪心的別莽著打dp啊 有道簡化版 p2279 hnoi2003 消防局的設立 樹形dp or 貪心 luogu傳送門 p3942 將軍令 又想起了四月。如果不是省...
Luogu P3942 將軍令 題解報告
題目傳送門 題目大意 這個題面有點中二啊hhhh 總結一下就是給出了一棵 n 個節點的樹,然後在乙個節點駐紮小隊就可以控制樹上所有距離它不超過 k 的節點,求最少需要駐紮多少個小隊就可以控制整棵樹。思路分析 首先有乙個非常顯然的結論,如果把小隊駐紮在葉子節點顯然是比駐紮在非葉子節點要不優的,所以我們...
題解 Luogu P3942 將軍令 貪心
f x 0 表示最近控制驛站的距離 f x 1 表示最遠不能控制的驛站距離 當f x 0 f x 1 k是說明能被控制,但沒有貢獻 當f x 1 k時,x必須被控制,這時已經到達能控制點的最遠距離,如果再向上,x就無法被控制 正確性 如果x可以向上移動,並且仍然能控制x移動前能控制的點,就把x向上移...