【6.10校内test】T2 医院设置
感觉我超废
我是一个连floyd都不会写了的灵魂OI选手qwq(考场上写了半天spfa然后写炸了(微笑))
floyd的暴力:
1.先建树:用邻接矩阵存。存之前记得先初始化为INF
注意是无向图。然后注意自己到自己的情况dis值=0;
2.跑一遍floyd,求最短路;
3.枚举每个点建医院,相当于求每个点作为源点的单源最短路,然后乘people数,比较大小,输出最小的一个;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
const int INF=; using namespace std; int n,dis[][],sum;
struct people{
int num,l,r;
}p[]; int main(){ memset(dis,INF,sizeof(dis));
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d",&p[i].num,&p[i].l,&p[i].r);
if(p[i].l) dis[i][p[i].l]=,dis[p[i].l][i]=;
if(p[i].r) dis[i][p[i].r]=,dis[p[i].r][i]=;
dis[i][i]=;
} for(int k=;k<=n;k++){//floyd
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];
}
}
int minn=INF;
for(int i=;i<=n;i++){//求单源最短路+乘起来;
sum=;
for(int j=;j<=n;j++)
sum+=dis[i][j]*p[j].num;
if(sum<minn) minn=sum;
}
cout<<minn<<endl;
return ;
}
又是water_lift的非暴力解法:
首先建树,water_lift是利用了“父子”关系建成的树,定义一个队列,依次枚举以每个结点做根的情况,然后修改权值,
开二维数组dis[i][j]和bool判断数组vis[i],分别表示从i=>j的权值大小,是否已经计算过了,然后再跑二重循环,将dis[i][j]与对应的人数相乘,比较取最小的(好像ans是water_lift用来记录哪个结点是根的
撒花☆☆☆☆
#include <iostream>
#include <queue>
#include <cstring>
#include <limits.h>
using namespace std;
int n;
int lch[], rch[], fa[], sum[];
int dis[][];
bool vis[];
int root;
int main()
{
cin >> n;
for (int i = ; i <= n; i++)
{
cin >> sum[i] >> lch[i] >> rch[i];
fa[lch[i]] = fa[rch[i]] = i;
}
for (int i = ; i <= n; i++)//好像也没用
{
root = i;
}
for (int i = ; i <= n; i++)
{
queue<int> q;
q.push(i);
memset(vis, , sizeof(vis));
vis[i] = ;
dis[i][i] = ;
while (!q.empty())
{
int node = q.front();
q.pop();
if (lch[node] && !vis[lch[node]])//保证左儿子右儿子以及父亲都被算到
//(这里的父亲是名义上的父亲,对于选择不同结点做根,父亲与儿子的分布是不同的
{
q.push(lch[node]);
vis[lch[node]] = ;
dis[i][lch[node]] = dis[i][node] + ;
}
if (rch[node] && !vis[rch[node]])
{
q.push(rch[node]);
vis[rch[node]] = ;
dis[i][rch[node]] = dis[i][node] + ;
}
if (fa[node] && !vis[fa[node]])
{
q.push(fa[node]);
vis[fa[node]] = ;
dis[i][fa[node]] = dis[i][node] + ;
}
}
}
int ans, ansv = INT_MAX;
for (int i = ; i <= n; i++)
{
int nowans = ;
for (int j = ; j <= n; j++)
{
nowans += dis[i][j] * sum[j];
}
if (nowans < ansv)
{
ansv = nowans;
ans = i;//好像没有用
}
}
cout << ansv << endl;
}

跑去luogu上学习了一下O(n)的算法
大概是没看懂(微笑狗)
end-
【6.10校内test】T2 医院设置的更多相关文章
- 【6.10校内test】 noip模拟
题目链接: p1 FBI树 p2 医院设置 p3 加分二叉树 | | | | | | 分 界 线 | | | | | | 应该算是一篇反思博. 对于OI,我真的算不上是热爱(当然不热爱不代表就不 ...
- codevs 2577 医院设置
2577 医院设置 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 设有一棵二叉树,如下图 其中,圈中数字表示结点居民的人口.圈边 ...
- 医院设置x
医院设置x 题目描述 Description 设有一棵二叉树,如下图 其中,圈中数字表示结点居民的人口.圈边上数字表示结点编号,.现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小, ...
- P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )
P1364 医院设置 题解 弗洛伊德水过 注意初始化一个大数 0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1 (后面补锅有详细解释) 代码 #include ...
- 【模板】树的重心 洛谷P1364 医院设置
P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...
- 【7.10校内test】T2不等数列
[题目链接luogu] 此题在luogu上模数是2015,考试题的模数是2012. 然后这道题听说好多人是打表找规律的(就像7.9T2一样)(手动滑稽_gc) 另外手动 sy,每次测试都无意之间bib ...
- django 1.10.3 admin后台管理设置显示中文
在网上搜索的什么设置settings.py的LANGUAE_CODE,在1.10.3下完全不行,直接报错,后来使用了django.middleware.locale.LocaleMiddleware才 ...
- Windowns Server 2016 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 + Mariadb 10.1.19 开发环境设置
1.设置PHP 1.1.官网下载PHPhttp://windows.php.net/downloads/releases/php-7.1.0-nts-Win32-VC14-x86.zip 1.2.解压 ...
- Mac 10.14.5系统偏好设置安全性与隐私不展示任何来源解决办法
Mac新系统升级(10.14.5)后未从appstore下载的软件在安装时会提示安装包已损坏之类的东东,这是因为没有打开“设置”—“安全与隐私”中的“任何来源”造成的,可是升级后的10.14.5却没有 ...
随机推荐
- Java设计模式:23种设计模式全面解析(超级详细)
设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性.稳健性以及安全性的解决方案. 1995 ...
- postgres select TOP X in group 查询每个组的前几名
参考: https://stackoverflow.com/questions/27415706/postgresql-select-top-three-in-each-group http://ch ...
- Spring Boot教程(二十一)开发Web应用(2)
在完成配置之后,举一个简单的例子,在快速入门工程的基础上,举一个简单的示例来通过Thymeleaf渲染一个页面. @Controller public class HelloController { ...
- WebClient上传下载文件,小白篇
WebClient的上传文件一直报错,各种百度各种稀奇古怪的东西,终于百度到一篇小白学习篇 转自: https://www.cnblogs.com/cncc/p/5722231.html 使用C#We ...
- 源码阅读-SwiftyJSON
最后更新:2018-03-19 一.说在前面的话: SwiftyJSON 作为一个 swift 的解析库, 在 Swift4 之前备受欢迎, 目前(2018.3.19) 已经有 1.6w+ Star ...
- Oracle-SQL程序优化3
最近一个星期ETL无论在凌晨或是在中午的JOB执行过程中经常卡住,导致不能按时完成系统引擎的运行,对业务产生影响. 通过生成AWR报告,发现有三条SQL消耗大量的CPU,而且还没有执行完成被终止的.如 ...
- Httpwatch抓包
一.下载Httpwatch 二.抓包 1.启动Httpwatch 打开浏览器-选择工具-Httpwatch professional(仅适用于IE和火狐40及以下浏览器) 2.开始抓包 点击“Reco ...
- springMVC的常用注解有哪些?
1.@Controller @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象.分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否 ...
- python之新式类与经典类
经典类与新式类 经典类:P 或 P()--深度查找,向上查父节点 新式类 :P(object)---广度查找,继承object,新式类的方法较多
- 在HTML标签元素中,绑定JS函数
<a onclick="ShowMsg(this)" id="myA" href="#">按钮</a> //JS方法 ...