UVa 10048 Audiophobia【Floyd】】的更多相关文章

题意:给出一个c个点,s条边组成的无向图,求一点到另一点的路径上最大权值最小的路径,输出这个值 可以将这个 d[i][j]=min(d[i][j],d[i][k]+d[k][j]) 改成 d[i][j]=min(d[i][j],max(d[i][k],d[k][j])) 即为先找出最大权值的一条边,再从这些边中找出最小的 #include<iostream> #include<cstdio> #include<cstring> #include <cmath>…
题意:求出两点之间所有路径最大权值的最小值. 思路:转变一下Floyd的形式即可: 注意:注意初始化问题,还有UVA奇葩的输出形式. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<map> using namespace std; #define inf 0x3f3f3f ][]; int main() { ; while…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=989 题意: 输入一个C个点S条边(C≤100,S≤1000)的无向带权图,边权表示该路径上的噪声值.当噪声值太大时,耳膜可能会受到伤害,所以当你从某点去往另一个点时,总是希望路上经过的最大噪声值最小.输入一些询问,每次询问两个点,输出这两点间最优路径上的最大噪声值. 分析: 直接用…
题目链接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=508">https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=508 题意:20个点的随意最短路.floyd 代码: #include <stdio.h> #incl…
题目&分析: 思路: Floyd变形(见上述紫书分析),根据题目要求对应的改变判断条件来解题. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1000000000 #define FRE() freopen("in.txt","r",stdin) #define FRO() freopen("out.txt","w",stdo…
题目链接:10048 - Audiophobia 题目大意:有n个城市,和m条街道,每条街道有一个噪音值,q次去问,从城市a到城市b,路径上分贝值的最大值最小为多少. 解题思路:与uva 10099的做法是一样的,可以参考一下. #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 105; const int M = 1005; co…
题目链接 BZOJ1599 题解 最小环模板?周末了养生一下[逃] 解释一下原理 \(floyd\)算法每一轮求出以\([1,k]\)为中介点的最短路 我们对于一个环,考虑环上编号最大的点,在\(k\)枚举到那个点时,\(k\)两边的点之间不经过\(k\)的最短路已经计算出来,相连接便是一个环 容易发现最小的环一定会被计算 #include<algorithm> #include<iostream> #include<cstring> #include<cstdi…
[题目描述] 有n颗形状和大小都一致的珍珠,它们的重量都不相同.n为整数,所有的珍珠从1到n编号.你的任务是发现哪颗珍珠的重量刚好处于正中间,即在所有珍珠的重量中,该珍珠的重量列(n+1)/2位.下面给出将一对珍珠进行比较的办法: 给你一架天平用来比较珍珠的重量,我们可以比出两个珍珠哪个更重一些,在作出一系列的比较后,我们可以将某些肯定不具备中间重量的珍珠拿走. 例如,下列给出对5颗珍珠进行四次比较的情况: 1.珍珠2比珍珠1重 2.珍珠4比珍珠3重 3.珍珠5比珍珠1重 4.珍珠4比珍珠2重…
题意:在一个三维的奶酪里面有n(n<=100)个洞,老鼠A想到达老鼠B的位置, 在洞里面可以瞬间移动,在洞外面的移动速度为10秒一个单位,求最短时间 看到n<=100,又是求最短时间,想到用floyd,可是给的是坐标,,还是三维的, 建不出图来----最后看的题解-------------- 是这一篇-- http://morris821028.github.io/2014/11/02/oj/uva/uva-1001/ 不懂这种叫不叫离散化,把输入的每个洞编号, 如果两个洞相交,那么d[i][…
题意:给出一个n个点的有向图,任意两个点之间都相互到达,求任意两点间最短距离的平均值 因为n很小,所以可以用floyd 建立出图,然后用floyd,统计d[][]不为0且不为INF的边的和及条数,就可以了 做的时候统计边的时候没有加不为0这个条件,改了好久= = #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #inclu…
思路:套用Floyd算法思想,d(i, j) = min(d(i,j), max(d(i,k), d(k,j)),就能很方便求得任意两点之间的最小噪音路径. AC代码 #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <utility> #include <string> #include <iostream&g…
题意:给出n个电梯,每个电梯的运行时间,每个电梯只能在相应的楼层停靠,而且没有楼梯,再给出想去的楼层,问从0层能否到达想去的楼层,求到达的最短时间 建图还是没有建出来--- 因为n<100,可以用floyd 考虑到d[i][j]=min(d[i][j],d[i][k]+d[k][j]) d[i][k]+d[k][j],表示从第i层到达了第k层,又从第k层到达了第j层,说明在  k 层的时候换乘了电梯,需要加一个60 然后就是输入过程中,一直维护d[i][j]的最小值,更新的时候往上往下都要更新(…
[NOIP2012]文化之旅 题目描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一 种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不 同的国家可能有相同的文化.不同文化的国家对其他文化的看法不同,有些文化会排斥外来 文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家). 现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这 位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路…
1 /* 题目大意: 从一个点到达另一个点有多条路径,求这多条路经中最大噪音值的最小值! . 思路:最多有100个点,然后又是多次查询,想都不用想,Floyd算法走起! */ #include<iostream> #include<cstring> #include<cstdio> #define INF 0x3f3f3f3f using namespace std; ][]; int main(){ int n, m, q; int u, v, d; ; scanf(…
题意:给出n个人,m个关系,问是否满足任意两个人之间的距离通过6个人就可以连接 用floyd就可以了,注意距离是大于7 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #include<set> #include<que…
题意:给出n条路,起点和终点,问最短距离 用map处理一下地名,再用floyd 可是不懂的是:为什么INF定义成0x7fffffff就输出一堆奇怪的东西,改成100000000就可以了 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack> #include<vector> #include<map> #i…
题意:给出n个站点,每个站点都有铁路通向其他站点 如果当前要走得路恰好是该站点的开关指向的铁路,则不用扳开关,否则要手动扳动开关,给出起点和终点,问最少需要扳动多少次开关 输入的第一行是n,start,end 接下来的n行,每一行中,第一个数是该站点向外连接的铁路条数, 第二个数是该站点的开关指向的铁路(因为这儿没有读懂= =所以都建不出图来--5555参见这一句话:Switch in the i-th intersection is initially pointing in the dire…
题目是要求任意给定两点的的路径上最大的边,最终输出这些最大边中最小的值,也就是求一条路径使得这条路径上最大的边在所有连通两点的路径中最短.根据Floyd—Warshall算法改造一下就行了.dp[i][j]表示i,j两点的连通路径中最大边的最小值. #include<stdio.h> #include<string.h> #define N 110 #define INF 999999999 #define max(a,b) ((a)>(b)?(a):(b)) #define…
这道题要求我们求出图中的给定的两个节点(一个起点一个终点,但这是无向图)之间所有“路径中最大权值”的最小值,这无疑是动态规划. 我开始时想到根据起点和终点用动态规划直接求结果,但最终由于题中S过大,会超时. 超时的代码如下: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <string…
之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放. 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种. 1.单源最短路:已知起点(终点),计算从源点到其它各个顶点的最短路径长度. 典型算法:Dijkstra,Bellman-Ford(能够算负的,比較慢),spfa(负权能用,加了松弛操作,速度比較炸天) 2.全局最短路:从一点到还有一点,典型如Floyd,A*启示式算法. 又一次用floyd写一遍: #includ…
#include <iostream> #include <map> #include <string> #include <memory.h> using namespace std; ; int n; //货币种类 int m; //兑换方式 mapSTL; //建立一个字符串与整数一一对应的容器STL,以便利用邻接矩阵存储数据 double rate; ],str1[],str2[]; ][]; int i,j,k; void floyd(void)…
Description   Solution n<=100自然联想Floyd 设两个数组d[n][n]存最短距离,t[n][n]存最短路径条数 更新d的时候顺便更新t,乘法原理 if(d[i][j]>d[i][k]+d[k][j]){ d[i][j]=d[i][k]+d[k][j]; t[i][j]=t[i][k]*t[k][j]; } else if(d[i][j]==d[i][k]+d[k][j]) t[i][j]+=t[i][k]*t[k][j]; 再统计答案 if(d[i][j]==d…
<题目链接> 题目大意: 题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时,输入数据结束),然后接下来N行描述第i(1<=i<=N)个经纪人与其他经纪人的关系(教你如何画图).每行开头数字M为该行对应的经纪人有多少个经纪人朋友(该节点的出度,可以为0),然后紧接着M对整数,每对整数表示成a,b,则表明该经纪人向第a个经纪人传递信息需要b单位时间,该图为有向图.构图完毕后,求当从该图中某点出发,将“消息”传播到整个经纪人网络的最小时间,输出这个经纪人号和最小时间…
Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:39731   Accepted: 13975 Description An ascending sorted sequence of distinct values is one in which some form of a less-than operator is used to order the elements from sm…
[UVA10048]噪音恐惧症 题面略 试题分析:直接Floyd一下维护u到v的路径最大值最小就可以了,1A 代码: #include<iostream> #include<cstring> #include<cstdio> #include<queue> #include<stack> #include<vector> #include<algorithm> //#include<cmath> using n…
普通的Floyd了分分秒可以水过,结果在submit前删调试段落的时候把程序本体给删了吃了两个WA…… #include<iostream> #include<cstring> #include<cstdio> ; using namespace std; ; int len[MAXN][MAXN]; int f[MAXN][MAXN]; int n,m; int main() { scanf("%d%d",&n,&m); ;i<…
水题,裸的Floyd.最后要求遍历一遍图的最短路径,只需要枚举将当前每一个点作为起始点.如果它不能到达其中的某一点,则该点不可能作为起始点:否则,由该点开始遍历全图的最短路径是到所有点距离中的最大值.最终结果就是这些最大值中的最小值. #include<iostream> #include<cstdio> using namespace std; +; ; int map[MAXN][MAXN]; int main() { int n; while (scanf("%d&…
    bitset玄学完美优化复杂度? 题目描述 参加jsoi冬令营的同学最近发现,由于南航校内修路截断了原来通向计算中心的路,导致去的路程比原先增加了近一公里.而食堂门前施工虽然也截断了原来通向计算中心的路,却没有使路程增加,因为可以找到同样长度的路作替代.其实,问题的关键在于,路截断的地方是交通要点. 同样的情况也出现在城市间的交通中.某些城市如果出了问题,可能会引起其他很多城市的交通不便.另一些城市则影响不到别的城市的交通.jsoi冬令营的同学发现这是一个有趣的问题,于是决定研究这个问题…
Dilworth定理,将最长反链转化为最小链覆盖.//貌似还能把最长上升子序列转化为不上升子序列的个数? floyd传递闭包,将可以重叠的最小链覆盖转化成不可重叠的最小路径覆盖.(引用:这样其实就是相当于将原图改造了一下,只要 x 能到达 y ,就直接连一条边 (x, y),这样就可以“绕过”原图的一些被其他路径占用的点,直接构造新路径了.) 建立二分图,跑匈牙利.(见白书P357) #include<cstdio> #include<cstring> using namespac…
floyd模板 #include<cstdio> #include<algorithm> using namespace std; ][],m,x,y,n; int main() { scanf("%d",&n); ;i<=n;i++) ;j<=n;j++) scanf("%d",&a[i][j]); ;i<=n;i++) ;j<=n;j++) ;k<=n;k++) a[j][k]=min(a[j…