zoukankan      html  css  js  c++  java
  • P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )

    P1364 医院设置

    题解

    弗洛伊德水过

    注意初始化一个大数 

          0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1

    (后面补锅有详细解释)

    代码

    #include<iostream>
    #include<cstdio>
    #include<algorithm> 
    #include<cmath>
    #include<string>
    #include<cstring>
    #include<cstdlib>
    
    using namespace std;
    
    long long n,minn=1e11,ans;
    int dis[101][101];
    
    struct apnode
    {
        int num,peo,l,r;
    }node[101];
    
    int main()
    {
        memset(dis,0x3f,sizeof(dis));  //初始化0x3f,太大它就炸了 
        
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d%d",&node[i].peo ,&node[i].l ,&node[i].r );
            node[i].num =i;
            if(node[i].l !=0)
            dis[i][node[i].l]=dis[node[i].l][i]=1;
            if(node[i].r !=0)
            dis[i][node[i].r]=dis[node[i].r][i]=1;
            dis[i][i]=0;
        }
    
        for(int k=1;k<=n;k++)
          for(int i=1;i<=n;i++)
             for(int j=1;j<=n;j++)
                if(dis[i][j]>=dis[i][k]+dis[k][j])
                     dis[i][j]=dis[i][k]+dis[k][j];
        
        for(int i=1;i<=n;i++)
        {
            ans=0;
            for(int j=1;j<=n;j++)
               if(j!=i&&dis[j][i]>0)
                  ans+=(dis[j][i]*node[j].peo) ;
        
            minn=min(minn,ans);
        }
        
        
        printf("%d
    ",minn);
        
        return 0;
    
    
    }

    解释一下为什么本题不可以初始化0x7fffffff

          memset 是把你初始化的那个值,截取最后一位(也就是两个字节),填充数组里的各位(实际是4位)

    比如说:初始化0x3f ,截取 3f ,填充到数组里,每个数组小格子里就被初始化为 3f3f3f3f

            so,如果你初始化为 0x7fffffff 那么就只会截取 最后两个字节 ff ,所以你就变成了-1,而不是一个很大的值


    Ps:感谢 ych 纠正,感谢 rqy 讲解,感谢讲过这个东西的神仙(看来听课的时候我可能走神了

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10998509.html
Copyright © 2011-2022 走看看