声音(sound)

【问题描述】
雅礼中学的校门口在修建地铁,而由此带来的噪音问题让周边的居民困扰不已。环保局正在研究 一项评估模型,可以定量评价噪音的危害程度。这项评估模型是这样的:将每一条街道视作一条 无向边,而路口,也就是街道间的交叉口视作一个结点。给每 条街道赋予一个数值,表示该街道的平均噪音值。如图,假设 你从路口 A 去路口 G,依次经过 A-C-F-G 这条道路,沿途你需 要忍受的最大噪音值则是 140。而假如你走 A-B-E-G, A-B-D-G 或者 A-C-F-D-G 你需要忍受的最大噪音值则分别是 90, 120, 80。在所有 A 到 G 的路径中,可以验证 A-C-F-D-G 是一条最能 忍受的路径,因为没有比其噪音值 80 更低的路径了。现在给 你附近街道的相关信息,请你求出从一个路口走到另一个路 口,沿途你不得不忍受的最小噪音值。

【输入】
输入包含多组测试点。
每组测试的第 1 行包含三个整数 C (C≤ 100),S (S ≤ 1000) 和 Q (Q ≤ 10000),用空格分隔,其中 C 表 示路口的数量,S 表示街道的数量,Q 表示询问的次数。
接下来的 S 行每行包括 3 个整数,c1, c2 和 d,用空格分隔,分别表示连接 c1 和 c2(c1 != c2)两 个路口的街道的噪音值 d。
接下来的 Q 行每行包括两个整数,c1 和 c2(c1 != c2),用空格分隔,表示询问从路口 c1 走到路 口 c2 不得不忍受的最小噪音值。
输入以 C、S、Q 均为 0 作为结束标志。

【输出】
对于每一个测试点,在第一行输出测试点编号“Case”(从 1 开始),参照样例输出。接下来对于 输入的每一次询问输出一个整数,表示不得不忍受的最小噪声值。如果询问的两个路口并不能相 互到达,则输出“no path”。每两个测试点的输出用一个空白行隔开


考试时傻了,没做出来( @—@ )


思路;

根据Q的规模,我们显然不可能使用在线算法(用得出算你赢)

再联系题目,C的规模为100,大约是n3加上一些常数级别的处理(并查集,二分以及常数优化......),联系本题题面(最短路径问题变式)

关键词的重叠,告诉我们一个重要信息:

 ( 离线 , 最短路 , n3 ) = floyd

所以我们确定了思路,使用floyd解决这道题。


本题目标为求“所有路径中最大边长最小”。于此,我们惯用的方法二分难以使用。所以,我们只能在floyd的条件判断上下功夫。于此,首先,我们要明确目标:最大 的 最小

所以,我们这样写动规方程: f[i][j] = min(f[i][j], max(f[i][k], f[k][j]));

什么意思呢:f[i][j]是 他自己 与 (从i到k与从j到k中更大的那一个)中更小的那一个。

注 :他自己 、(从i到k与从j到k中更大的那一个)中更小的那一个 是对路径而言,所以选最小。

  从i到k 、从j到k 是对边权而言,所以选最小。

至此,核心观点分析完毕。


#include<bits/stdc++.h>
using namespace std;
const int maxn = 100 + 5;
const int inf = 1e9 ;
int f[maxn][maxn];
int main() {
int n , m , q , cnt = 0; freopen("sound.in", "r", stdin);
freopen("sound.out", "w", stdout); while(~scanf("%d%d%d", &n, &m, &q)) {
if(n == 0 && m == 0 && q == 0)return 0; cnt ++;
printf("Case #%d\n", cnt); for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
f[i][j] = inf;
}
} for(int i = 1; i <= m; i++) {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
f[x][y] = z;
f[y][x] = z;
} for(int i = 1; i <= n; i++) {
f[i][i] = 0;
} for(int k = 1; k <= n; k++) {
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
f[i][j] = min(f[i][j], max(f[i][k], f[k][j]));
}
}
} for(int i = 1; i <= q; i++) {
int x, y;
cin >> x >> y; if(f[x][y] != inf)
printf("%d\n", f[x][y]);
else
printf("no path\n");
}
} return 0;
}

SRX_Test_2_sound的更多相关文章

随机推荐

  1. App 后台架构

    转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的 ...

  2. angular页面

    <!DOCTYPE html><!--[if lt IE 9]> <html lang="zh" xmlns:ng="http://angu ...

  3. Pytest 系列(25)- 标记用例级别 @allure.

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 平时写测试用例也会划分优先级 ...

  4. PowerDesigner 概念数据模型(CDM)

    大   中   小 PowerDesigner 概念数据模型(CDM) 说明 2014-05-07  大数据深...  来源  阅 51   转藏到我的图书馆   微信 分享: QQ空间 QQ好友 新 ...

  5. 华为云FusionInsight MRS:助力企业构建“一企一湖,一城一湖”

    摘要:华为云FusionInsight MRS新一代的数据湖,让大数据越用越快.越用越易.越用越稳.越用越省!让数据价值近在眼前! 10月30日,以"携手共赢·数创未来"为主题的第 ...

  6. 联发科Mediatek工业路由芯片上网稳定低功耗的Router模块WiFi中继——无线AP定制方案

    Router模块又名路由器模块,是指将路由器的接口类型及部分扩展功能是可以根据实际需求来进行无线接入服务,允许其他无线设备接入,通过局域无线端或联网远程端,进行数据访问,对无线设备进行远程控制.常见的 ...

  7. 11张图和源码带你解析Spring Bean的生命周期,建议收藏~!

    在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近把整个流程画成了一个流程图.待会儿使用流程图,说明以及代码的形式来说明整个声明周期的流程.注意因为代码比较多,这里的流程图 ...

  8. angularJS 小记

    刚刚接触angularJS,网上学习了一遍菜鸟教程(http://www.runoob.com/angularjs/angularjs-tutorial.html),做了些基础知识的笔记. Angul ...

  9. apache+php安装

    https://codebriefly.com/how-to-setup-apache-php-mysql-on-windows-10/ 出问题的地方 1.apache rewrite 模块开启 (去 ...

  10. Metasploitable3学习笔记--永恒之蓝漏洞复现

    漏洞描述: Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不 ...