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[][]; 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 )的更多相关文章
- 【模板】树的重心 洛谷P1364 医院设置
P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...
- 洛谷P1364 医院设置(Floyd)
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...
- luogu P1364 医院设置
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1.如上 ...
- 洛谷P1364 医院设置
LITTLESUN的第一道图论,撒花~~ 题目链接 这道题是Floyd的板子题 注意对于矩阵图的初始值赋值要全部赋值成最大值 十六进制的最大值表示方式是0x3f3f3f3f memset(G,0x3f ...
- P1364 医院设置
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...
- P1364 医院设置 洛谷
https://www.luogu.org/problem/show?pid=1364 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结 ...
- 洛谷 P1364 医院设置
题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l.如上 ...
- p1364 医院设置 题解
思路:floyd 很普通的思路. 先用floyd求出两个边之间的距离,然后乘以人数. 代码: #include<iostream> #include<cstring> usin ...
- P1364 医院设置(树型结构)
传送门闷闷闷闷闷闷 ~~放一个可爱的输入框.~~ 考虑在O(n)的时间内求数以每个节点为医院的距离和. \(设想一下,如果我们已知以1为根节点的距离和f[1],如何求出子节点呢?\) 当医院从1转换到 ...
随机推荐
- Jmeter读取CSV文件,请求参数乱码
Jmeter读取CSV文件,请求参数乱码 1.修改本地配置文件,jmeter.properties,修改以下配置项 sampleresult.default.encoding=UTF-8 重启Jmet ...
- SourceTree报错
1.SourceTree 拉取报错 Your local changes to the following files would be overwritten by merge:XXX 原因: 本 ...
- Codeforces1238F. The Maximum Subtree(树形dp)
题目链接:传送门 思路: 题意说用线段的相交作为边,来构造树,所以不存在大于等于3个的线段两两相交,否则会构成环.因而构造出的树中,每个点最多只会与2个度大于1的节点相邻. 不妨把1设为树根,用deg ...
- FPDF_CHAR_INFO
typedef struct { FX_WCHAR m_Unicode; FX_WCHAR m_Charcode; FX_INT32 m_Flag; FX_FLOAT m_FontSize; FX_F ...
- C++打开属性对话框并保持其处于打开状态
#include <Windows.h> #include <shlobj_core.h> #pragma comment(lib,"Shell32.lib" ...
- H5手机端开发问题汇总及解决方案
前言 少侠,请留步,相见必是缘分,赠与你一部<踏坑秘籍> 扎马步 踏坑第一式 ios竖屏拍照上传,图片被旋转问题 解决方案 // 几个步骤 // 1.通过第三方插件exif-js获取到图片 ...
- HBase(1.0.2) API数据模型
几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...
- Python基础(四)
一.迭代器 让不同数据类型具有相同的遍历方式:list.dict.str.tuple.set 1.特点: ①省内存 ②只能向前,不能反复 ③惰性机制 2.可迭代对象 ###dir() 查看 ...
- POI操作Excel(批量导出数据/下载excel)
目录 1.第一个demo:创建工作簿,创建sheet页,创建单元格 2.创建一个时间格式的单元格 3.遍历工作簿的行和列并获取单元格内容 4.文本提取 5.单元格对齐方式 ...
- eclipse在线安装ermaster插件
eclipse在线安装ermaster插件: https://www.jianshu.com/p/449fbcd9141a ERMaster的安装和使用 https://www.cnblogs.com ...