【题解】[P2279 HNOI2003]消防局的设立

又是一道贪心。

随便指定一个点为根,可以知道在覆盖了一个节点的子树的情况下,消防站越高越好。那么我们就贪心吧。\(trick\)是按深度\(push\)到\(queue\)里,然后直接取出来判断、贪心。

咕咕咕

#include<iostream>
#include<cstring>
#include<queue>
#include<cstdlib>
#include<vector>
#include<set>
#include<map>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<ctime> using namespace std; #define TMP template < class ins >
#define endl '\n'
#define RP(t,a,b) for(register int t=(a),edd=(b);t<=edd;t++)
#define ERP(t,a) for(register int t=head[(a)];t;t=e[t].nx)
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;t--)
typedef long long ll; TMP inline ins qr(ins tag){
char c=getchar();
ins x=0;
int q=0;
while(c<48||c>57)
q=c==45?-1:q,c=getchar();
while(c>=48&&c<=57)
x=x*10+c-48,c=getchar();
return q==-1?-x:x;
}
const int maxn=1005;
struct E{
int to,nx;
}e[maxn<<1];
int head[maxn];
int Cnt; inline void add(int fr,int to,bool f){
e[++Cnt]=(E){to,head[fr]};
head[fr]=Cnt;
if(f)
add(to,fr,0);
}
int n;
int maxd,ans;
int t1, t2 ,t3;
int r[maxn];
int d[maxn];
bool cov[maxn];
vector < int > dpt[maxn];
#define pb push_back void dfs(int now,int last){
d[now]=d[last]+1;
r[now]=last;
maxd=max(maxd,d[now]);
dpt[d[now]].pb(now);
ERP(t,now)
if(e[t].to!=last)
dfs(e[t].to,now); } void dfs2(int now,int sum){
cov[now]=1;
if(!sum)
return;
ERP(t,now)
dfs2(e[t].to,sum-1);
} queue < int > q;
inline void eff(){
DRP(t,maxd,1)
RP(i,0,dpt[t].size()-1)
q.push(dpt[t][i]);
while(!q.empty()){
int temp=q.front();
q.pop();
//cout<<temp<<endl;
if(!cov[temp])
ans++,dfs2(r[r[temp]],2);
}
cout<<ans<<endl;
} inline void init(){
n=qr(1);
RP(t,2,n){
t1=qr(1);
add(t,t1,1);
}
dfs(1,1);
r[1]=1;
eff();
} int main(){
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
return init(),0;
}

【题解】P2279消防局的设立的更多相关文章

  1. 洛谷P2279 消防局的设立 [HNOI2003] 贪心

    正解:贪心 解题报告: 传送门! 这题贪心得挺显然的,,,?居然能有蓝,,,是蓝题太水了嘛,,,? 简单说下,这题一看到就能想到,对最低的没被覆盖到的点给它的祖父建一个消防局 没了? 哦这题实现还挺有 ...

  2. 洛谷P2279 消防局的设立【树形dp】

    题目:https://www.luogu.org/problemnew/show/P2279 题意:一棵树.在节点处建消防站,可以覆盖与他距离在2之内的节点.问最少要建多少个消防站,可以覆盖所有的节点 ...

  3. P2279 消防局的设立(贪心+dp)

    题目链接:传送门 题目大意: 给定一棵树(N个基地N-1条边): 用半径为2的消防局覆盖这N个基地,问最小的消防局数量. (树上距离为k的最小覆盖问题) 思路: 每次贪心地找到不被覆盖的最深的一个节点 ...

  4. P2279 消防局的设立 (树形DP or 贪心)

    (点击此处查看原题) 树形DP写法 看到这个题的要求,很容易相到这是一个树形DP的问题,但是dp数组应该如何设计并转移才是关键 dp[i][0]代表当前结点可以向上覆盖2层,自身一定被覆盖dp[i][ ...

  5. 洛谷P2279消防局的设立

    传送门啦 一个很摸不清头脑的树形dp 状态: $ dp[i][0] $ :选自己 $ dp[i][1] $ :选了至少一个儿子 $ dp[i][2] $ :选了至少一个孙子 ------------- ...

  6. 洛谷 P2279 03湖南 消防局的设立

    2016-05-30 16:18:17 题目链接: 洛谷 P2279 03湖南 消防局的设立 题目大意: 给定一棵树,选定一个节点的集合,使得所有点都与集合中的点的距离在2以内 解法1: 贪心 首先D ...

  7. P2279 [HNOI2003]消防局的设立

    P2279 [HNOI2003]消防局的设立考场上想出了贪心策略,但是处理细节时有点问题,gg了.从(当前深度最大的节点)叶子节点往上跳k个,在这里设消防局,并从消防局遍历k个距离,标记上. #inc ...

  8. [luogu]P2279 [HNOI2003]消防局的设立[贪心]

    [luogu]P2279 [HNOI2003]消防局的设立 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两 ...

  9. 【洛谷P2279】[HNOI2003]消防局的设立

    消防局的设立 题目链接 贪心:每次取出深度最大的节点,若没有被覆盖到,要想覆盖它, 最优的做法显然是将它的爷爷设为消防局 (因为该节点深度为最大,选兄弟.父亲所覆盖的节点,选了爷爷后都能够覆盖) 用优 ...

随机推荐

  1. 2016北京集训测试赛(六)Problem B: 矩阵

    Solution 最小割. 参考BZOJ 3144切糕 在那道题的基础上将建图方法稍作变形: 我们对格子进行黑白染色, 对于两个格子之和\(\le k\)的限制, 就可以确定其中一个是白色格子, 一个 ...

  2. 怎样去主动拿一个锁并占有?synchronized关键字即可

    怎样主动去拿一个?synchronized关键字即可 怎样去释放一个锁呢?要求锁对象主动释放,打乱占有当前锁的线程即可

  3. SuperIndicator 一个专用打造轮播的类库

    Github地址:https://github.com/hejunlin2013/SuperIndicator,欢迎fork,star.著名Android-Universal-Image-Loader ...

  4. weblogic的集群与配置图文方法

      一.Weblogic的集群 还记得我们在第五天教程中讲到的关于Tomcat的集群吗? 两个tomcat做node即tomcat1, tomcat2,使用Apache HttpServer做请求派发 ...

  5. 数据库访问的弹性化---WebLogic和Oracle RAC的整合:Active GridLink

        1.  什么是Active GridLink Data Source 从Oracle WebLogic Server 10.3.4版本开始引进了一种单数据源实现来支持Oracle RAC集群. ...

  6. EasyMvc入门教程-基本控件说明(5)小图标

    我们网页很多时候需要小图标来进行美化,EasyMvc默认提供了100多种常用小图标,您可以根据实际情况选择使用,请看下面的例子: @Html.Q().Ico().Type(EasyMvcHelper. ...

  7. Flutter开发记录part3

    (1) 获取当前屏幕宽度 width: MediaQuery.of(context).size.width, (1) pull_to_refresh,smartrefresh 自定义文字: new S ...

  8. SilverLight-DataConversion: 银光数据转换

    ylbtech-SilverLight-DataConversion: 银光数据转换 1.A, Silverlight字符串格式表 1.B, 价格格式转换器 1.C, 日期时间格式转换器 1.D, 图 ...

  9. nx sdk

    最近在做ns 任天堂略坑.. 他想做成一键安装,可总是有些问题,这样再去找就很麻烦了.都是包在里面的,要看很多文档 第一个问题是 NintendoSDK Configuration Manager 这 ...

  10. java wait(),notify(),notifyAll()的理解

    这个三个函数来自Object类,众所周知它们是用于多线程同步的.然而,有个问题却一直没搞清楚,即notify()函数到底通知谁?<Thinking in JAVA>中有这么一句话,当not ...