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[][]; struct apnode
{
int num,peo,l,r;
}node[]; int main()
{
memset(dis,0x3f,sizeof(dis)); //初始化0x3f,太大它就炸了 scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&node[i].peo ,&node[i].l ,&node[i].r );
node[i].num =i;
if(node[i].l !=)
dis[i][node[i].l]=dis[node[i].l][i]=;
if(node[i].r !=)
dis[i][node[i].r]=dis[node[i].r][i]=;
dis[i][i]=;
} for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;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=;i<=n;i++)
{
ans=;
for(int j=;j<=n;j++)
if(j!=i&&dis[j][i]>)
ans+=(dis[j][i]*node[j].peo) ; minn=min(minn,ans);
} printf("%d\n",minn); return ; }

补锅补锅

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

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

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

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


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

P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )的更多相关文章

  1. 【模板】树的重心 洛谷P1364 医院设置

    P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...

  2. 洛谷P1364 医院设置(Floyd)

    题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...

  3. luogu P1364 医院设置

    题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1.如上 ...

  4. 洛谷P1364 医院设置

    LITTLESUN的第一道图论,撒花~~ 题目链接 这道题是Floyd的板子题 注意对于矩阵图的初始值赋值要全部赋值成最大值 十六进制的最大值表示方式是0x3f3f3f3f memset(G,0x3f ...

  5. P1364 医院设置

    题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...

  6. P1364 医院设置 洛谷

    https://www.luogu.org/problem/show?pid=1364 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结 ...

  7. 洛谷 P1364 医院设置

    题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...

  8. p1364 医院设置 题解

    思路:floyd 很普通的思路. 先用floyd求出两个边之间的距离,然后乘以人数. 代码: #include<iostream> #include<cstring> usin ...

  9. P1364 医院设置(树型结构)

    传送门闷闷闷闷闷闷 ~~放一个可爱的输入框.~~ 考虑在O(n)的时间内求数以每个节点为医院的距离和. \(设想一下,如果我们已知以1为根节点的距离和f[1],如何求出子节点呢?\) 当医院从1转换到 ...

随机推荐

  1. Jquery复习(三)之链式调用

    通过 jQuery,可以把动作/方法链接在一起. Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上). jQuery 方法链接 直到现在,我们都是一次写一条 jQue ...

  2. Jquery复习(二)之stop()易忘点

    jQuery stop() 方法 jQuery stop() 方法用于停止动画或效果,在它们完成之前. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. 语法:$ ...

  3. CSS高度坍塌问题的原因以及解决办法

    原因: 在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高.但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷. ...

  4. Linux连接外网~可以Windows与Linux互ping通~图文

    我这里用的是CentOS7_1511 下载地址 http://linux.xitongxz.net:808/201603/CentOS-7-x86_64-DVD-1511.iso 选择 虚拟机左上角 ...

  5. 2019-11-29-WPF-轻量级-MVVM-框架入门-2.1.2

    title author date CreateTime categories WPF 轻量级 MVVM 框架入门 2.1.2 lindexi 2019-11-29 10:16:10 +0800 20 ...

  6. tar/gzip/zip文件打包、压缩命令

    一.tar打包备份工具 1.命令功能 tar 将多个文件或目录打包在一起,可用通过调用gzip或zip实现压缩.解压的命令:tar不仅可以多多个文件进行打包,还可以对多个文件打包后进行压缩. 2.语法 ...

  7. JSONP 跨域请求原理

    0x00 简介 由于浏览器的同源策略,我们想要从别的域获取数据变得困难,需要特殊的技术才能获取 0x01 使用 客户域:client.com 服务器(他域):server.com 如客户想访问 : h ...

  8. Vue基础第四章 - v-bind指令

    1.v-bind指令介绍 在前端开发过程中最常做的事莫过于class类名的绑定与style内联样式的修改,Vue中使用v-bind指令来实现这两个需求,在第二章中给出过简单的示例,下面我们来看一下v- ...

  9. Linux 系统分类

    linux系统,主要分debian系和redhat系,还有其它自由的发布版本. 1.debian系主要有Debian,Ubuntu,Mint等及其衍生版本: 2.redhat系主要有RedHat,Fe ...

  10. [易学易懂系列|golang语言|零基础|快速入门|(四)]

    今天开始,我们来写代码. 学习一门语言,最快的方式就是写代码,做项目. 别的学习教程,都是hello world. 我们就来点不一样的吧.我们不一样!不一样!不一样! 首先,打开VSCODE.( 关于 ...