hdu5521 Meeting】的更多相关文章

HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的图,且要跑出单源最短路,那不就是个dij吗 大方向定下,但图该怎么建呢? way1: 给每个团内的所有点两两暴力建边 如图所示:黑的为点,红的为团,相同颜色的边长度相等 共 \(\sum ^{m}_{i=1}\dfrac {1}{2}s_{i}\left( s_{i}-1\right)\) 条边 而…
题目链接: Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2024    Accepted Submission(s): 628 Problem Description Bessie and her friend Elsie decide to have a meeting. However, after Farm…
传送门 题目 Bessie and her friend Elsie decide to have a meeting. However, after Farmer John decorated his fences they were separated into different blocks. John's farm are divided into n blocks labelled from 1 to n.Bessie lives in the first block while E…
题意:给出几个集合,每个集合中有Si个点 且任意两个点的距离为ti,现在要求两个人分别从1和n出发,问最短多长时间才能遇到,且给出这些可能的相遇点; 取两个人到达某点时所用时间大的值 然后取最小的  若有多个结果 则按点的升序排列 解析: 比较裸的最短路 ,但坑在建图上,Si的和小于1e6  那么建的边肯定会超内存  所以压缩一下,把每个集合看作一个点  集合中的点到集合的距离为0  集合到集合中的点的距离为ti   即入为0 出为ti    然后普通最短路求就好了 spfa: #include…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 学习菊苣的博客,只粘链接,不粘题目描述了. 题目大意就是一个人从1开始走,一个人从n开始走.让最后相遇的时间最短. 题目就是个最短路,不过唯一不同的是,题目图的描述方式比较特别. 从规模上来看,想把这张图描述成邻接矩阵或者邻接表是不可能的. 必然只能按照题目要求的意思来存. 于是第一步存图的方式,我采用了两个vector数组,(当然此处可以使用链式前向星),一个存了和点相关的集合有哪些in[]…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 题目大意: 有 \(n\) 个点 \(m\) 个集合,一个点可能处于若干个集合内,属于第 \(i\) 个集合的任意两点间的距离是 \(t_i\) ,点 \(1\) 是起点,点 \(n\) 是终点. 你现在需要找到所有点中到 \(1\) . \(n\) 两点的距离的较大值的最小值,并输出所有满足要求的点. 解题思路: 这道题目难的不是最短路,而是建图. 因为最多可能有 \(n\) 个点在同一个集…
题意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和<=1e6.有两个人分别在1和N处,求1个点使得两个人到这一点距离的最大值最小 思路:这题是裸的最短路问题,难点在建图.然而建图也只有1步,在集合外新建1个点,每个点向它连一条Ti/2的边(避免浮点数,可以先乘2,然后结果除以2).如此巧妙... #include <bits/stdc++.h> using namespace std; #define X first #define Y seco…
题意 A,B两个人分别在1和n区.每个区有若干点(区之间的点可以重复,各个区内点间的距离一致),给出区之间有联系的图以及到达所需时间.求两个人见面最短时间以及在哪个区碰面(可有多个) 分析 隐式图搜索.但是注意一点:当我们搜索过一个区之后,这个区的最短路一定是被更新完成的,最短的(只要没有负权边).因此,我们应当对已经访问过的点加一个标记,即可极大的剪枝,加快对隐式图的Dijkstra. 另一种做法 对于每个区定义一个新的虚拟点,区中的每个点到这点的距离是给定的\(t_i\)(不去生成一个完全图…
题目大意:给定一张\(N\)个点的图,构成了\(M\)个团,每个团内的边权均相等,求图上有多少个点满足到\(1\)号节点和\(N\)号节点的最大值最小. 题解: 本题的核心是如何优化连边,考虑对于每一个团增加一个虚拟节点,并让每个节点到虚拟节点连一条边权为\(t_i\)的有向边,虚拟节点到团中每一个点连一条边权为\(0\)的有向边,最后跑最短路求解即可. 注意:数据中有\(0\)下标的节点,读入时需要忽略,别问我怎么知道的... 代码如下 #include <bits/stdc++.h> us…
A group of two or more people wants to meet and minimize the total travel distance. You are given a 2D grid of values 0 or 1, where each 1 marks the home of someone in the group. The distance is calculated using Manhattan Distance, where distance(p1,…