• 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 讲解,感谢讲过这个东西的神仙(看来听课的时候我可能走神了

  • 相关阅读:
    一个丰富的通知工具类 --第三方开源--NotifyUtil
    RecycleView出现折叠效果--第三方开源--SectionedExpandableGridRecyclerView
    Socket TCP连接相互通信
    InputStream与String,Byte之间互转
    socket调试工具
    可直接导入studio的 android-Ultra-Pull-To-Refresh-master
    纯手写验证码MVC中
    Upload图片-单张
    C#、SQL中的事务
    MVC、控件、一般处理程序中的session and cookie
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/10998509.html
Copyright © 2020-2023  润新知