zoukankan      html  css  js  c++  java
  • [HNOI2003]消防局的设立

    题目描述

    2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地。起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了一个巨大的树状结构。如果基地A到基地B至少要经过d条道路的话,我们称基地A到基地B的距离为d。

    由于火星上非常干燥,经常引发火灾,人类决定在火星上修建若干个消防局。消防局只能修建在基地里,每个消防局有能力扑灭与它距离不超过2的基地的火灾。

    你的任务是计算至少要修建多少个消防局才能够确保火星上所有的基地在发生火灾时,消防队有能力及时扑灭火灾。

    输入格式

    输入文件名为input.txt。

    输入文件的第一行为n (n<=1000),表示火星上基地的数目。接下来的n-1行每行有一个正整数,其中文件第i行的正整数为a[i],表示从编号为i的基地到编号为a[i]的基地之间有一条道路,为了更加简洁的描述树状结构的基地群,有a[i]<i。

    输出格式

    输出文件名为output.txt

    输出文件仅有一个正整数,表示至少要设立多少个消防局才有能力及时扑灭任何基地发生的火灾。


    好好的一道dp生生地做成了贪心

    不过,挺好的

    #include<bits/stdc++.h> 
    #define re return
    #define inc(i,l,r) for(int i=l;i<=r;++i)
    using namespace std;
    template<typename T>inline void rd(T&x)
    {
        char c;bool f=0;
        while((c=getchar())<'0'||c>'9')if(c=='-')f=1;
        x=c^48;
        while((c=getchar())>='0'&&c<='9')x=x*10+(c^48);
        if(f)x=-x; 
    }
    
    
    const int maxn=2005; 
    int n,m,k,d[maxn],hide[maxn],dis[maxn],fa[maxn];
    
    inline bool cmp(int x,int y)
    {
        re d[x]>d[y];
    }
    
    int main()
    {
        freopen("in.txt","r",stdin);
        int x,y,z;
        rd(n);
        hide[1]=1;dis[1]=dis[0]=n;
        inc(i,2,n)
        {
            rd(fa[i]);
            hide[i]=i;
            d[i]=d[fa[i]]+1;
            dis[i]=n;
        } 
        
        sort(hide+1,hide+n+1,cmp); 
    
        int ans=0;
        inc(i,1,n)
        {
            x=hide[i];
            y=fa[x];z=fa[y];
            //向下覆盖 
            dis[x]=min(dis[x],min(dis[y]+1,dis[z]+2));
            if(dis[x]>2)
            {
                ++ans;
                dis[z]=0;
                dis[fa[z]]=min(dis[fa[z]],1);//向上覆盖 
                dis[fa[fa[z]]]=min(dis[fa[fa[z]]],2);        
            }
        }
        
        printf("%d",ans);
        re 0;
    }
  • 相关阅读:
    window7 上创建定时任务来运行自动化脚本
    初试接口测试
    list tuple dict (列表,元祖,字典间的相互转换)
    防止忘记的一些博客
    [python] 常用正则表达式爬取网页信息及分析HTML标签总结
    python正则表达式提取字符串
    关于json的dump和dumps
    三月23日测试Fiddler
    第六章 部署Python开发的web业务
    第五节 Nginx集群
  • 原文地址:https://www.cnblogs.com/lsyyy/p/11433059.html
Copyright © 2011-2022 走看看