首页 > TAG信息列表 > 消防局
【刷题】【贪心】【树】消防局的设立
一棵树,n个基地 每个消防局有能力扑灭与它距离不超过2的基地的火灾。 你的任务是计算至少要修建多少个消防局才能够确保火星上所有的基地在发生火灾时,消防队有能力及时扑灭火灾。、 (luogu) 这题贪心比较好想 考虑当前深度最大的叶子结点,你肯定要有一个消防局去覆盖它, 那么既然他【DP专题】——洛谷P2279:消防局的设立
DP好题,贪心好题。 传送门:GO 参考了一下rickole大大的题解:GO 用f[u][0/1/2/3/4]表示第u个点能管+2,+1,0,-1,-2层的最小消防局个数。 其余可以画个图yy一下。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int read(){ 4 int x=0,f=1; 5 char c=getchar(); 6P2279 消防局的设立 (树形DP or 贪心)
(点击此处查看原题) 树形DP写法 看到这个题的要求,很容易相到这是一个树形DP的问题,但是dp数组应该如何设计并转移才是关键 dp[i][0]代表当前结点可以向上覆盖2层,自身一定被覆盖dp[i][1]代表当前结点可以向上覆盖1层,自身一定被覆盖dp[i][2]代表当前结点可以向上覆盖0层,自身一定被覆盖d洛谷 P2279 [HNOI2003]消防局的设立
题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地。起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状结构。如果基地A到基地B至少要经过d条道路的话,我们称基地A到基地B的距离为d【题解】P2279消防局的设立
【题解】[P2279 HNOI2003]消防局的设立 又是一道贪心。 随便指定一个点为根,可以知道在覆盖了一个节点的子树的情况下,消防站越高越好。那么我们就贪心吧。\(trick\)是按深度\(push\)到\(queue\)里,然后直接取出来判断、贪心。 咕咕咕 #include<iostream> #include<cstring> #include<