p2279 [hnoi2003]消防局的設立
主要思路:貪心,從葉子節點開始(按深度排序即可做到),從它父親的父親,把距離不超過 \(2\) 的節點都打上標記,\(ans++\)。這樣一定最優,因為必須覆蓋那個沒被覆蓋的節點,而從祖父開始可以覆蓋更多的點。注意把根節點的父親設為根節點,否則從根節點開始跳就re了
#includeusing namespace std;
const int n=1005;
int n,ans;
bool vis[n];
vectorg[n];
int p[n];
struct node2d[n];
bool cmp(node2 a,node2 b)
void dfs1(int now,int deep,int fa)
}int main()
dfs1(1,1,1);
sort(d+1,d+n+1,cmp);
for(int i=1;i<=n;i++)
printf("%d\n",ans);
return 0;
}
消防局的設立
我先想的是貪心,但是沒有任何依據 所以rang了 然後想到了乙個有依據的貪心 我們可以找深度最深的乙個點開始考慮。可以證明,取此節點的爺爺一定是最優的。取自己 可以覆蓋自己,自己兄弟,父親,爺爺。取兄弟 可以覆蓋自己,自己兄弟,父親,爺爺。取父親 可以覆蓋自己,自己兄弟,父親,爺爺,父親的兄弟。取爺...
消防局的設立
2020 年,人類在火星上建立了乙個龐大的基地群,總共有 n 個基地。起初為了節約材料,人類只修建了 n 1 條長為 1 的道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。由於火星上非常乾燥,經常引發火災,人類決定在火星上修建若干個消防局。消防局只能修建...
消防局的設立(樹形DP)
2020 年,人類在火星上建立了乙個龐大的基地群,總共有 n 個基地。起初為了節約材料,人類只修建了 n 1 條長為 1 的道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。由於火星上非常乾燥,經常引發火災,人類決定在火星上修建若干個消防局。消防局只能修建...