hdu4725 The Shortest Path in Nya Graph】的更多相关文章

HDU 4725 The Shortest Path in Nya Graph : http://acm.hdu.edu.cn/showproblem.php?pid=4725 题意: 在一个图中跑最短路,这个图中的每一个点都有一个等级,每次都只能向高一个等级或低一个等级的点跑.问最短的距离. 思路: 参考/kuangbin 这道题自己一开始直接按等级枚举,发现这样的复杂度是n*n的.需要更加合理的建图.考虑给每个等级建立两个点,一个用于进,一个用于出. 第i层,入边到N+2*i-1, 出边从N…
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on.        The Nya graph is an un…
典型的最短路问题,但是多了一个条件,就是每个点属于一个layer,相邻的layer移动,如x层移到x+1层需要花费c. 一种显而易见的转化是我把这些边都建出来,但是最后可能会使得边变成O(n^2); 网上看到的一些做法就是拆点,假如我给每层做一个平台点,所有点都可以到这个平台,然后再换乘到别的平台里不就可以了吗? 所以对于属于第i层的点我们构造一个i层点的虚拟点,把这些点连到这个平台点,花费为0,相邻平台点之间的花费为c不就可以了吗? 但是问题就出现在这里了,这样的话同一层的点的花费就会变成0,…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 如果直接建图复杂度过大,但是考虑到每层之间的有效边很少,只要在每层增加两个虚拟节点n+i和2*n+i.n+i节点向 i 层的所有连边,权值为0.i 层的所有点向2*n+i节点连边,权值为0.然后每层直接建立边就可以了,即2*n+i-1向n+i连边,权值为c,2*n+i向n+i-1连边,权值为c.3*n个点,最多有有9*n条边.. //STATUS:C++_AC_730MS_14340KB #i…
分析:对于每一层,原来n个点,然后扩展为原来的三倍,每一层扩展一个入点,一个出点,然后跑最短路 注:tmd我把一个n写成m了,然后wa了7次,我都要怀疑人生了 #include<cstdio> #include<cstring> #include<queue> #include<cstdlib> #include<algorithm> #include<vector> #include<cmath> using names…
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297574.html      ---by 墨染之樱花 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题目描述:给一张图,每个点(1~N)都属于一个层(1~N),比如点1在第5层,点3在第4层,点4也在第5层.任何在x层的点都可以移动到x+1层和x-1层中的任何点上,并且需要耗费C的权值.除此之外,另外再给出M条带权无向边.求点1到点…
这道题看了下很多人都是把每一层拆成两个点然后建图做的. 我的思路很直接,也不用建图,直接在更新每个点时更新他相邻的边和相邻的层,当然前提是每个点只更新一次,每个层也只更新一次,这样才能确保时间复杂度. 这里我用了两个邻接表,一个是邻接边,一个是邻接层,最后用优先队列优化下. 下面是代码 #include<stdio.h> #include<string.h> #include<queue> #include<vector> using namespace s…
职务地址:HDU 4725 这题卡了好长时间了,建图倒是会建,可是不会最短路的算法优化,本以为都须要堆去优化的,打算学了堆之后再来优化.可是昨晚CF的一道题..(那题也是不优化过不了..)然后我就知道了还有不须要堆也能够的优化.并且优化的操作非常easy,把单向队列变成双端队列即可了.详细优化思路是若d[v]比队列前端的元素的距离小,就增加队列前端,否则增加队列尾端. 非常easy吧. ..会了后.把这题一加上slf优化就过了. .. 事实上这题的重点在于建图..不在于优化....sad.. 这…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13070    Accepted Submission(s): 2794 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 Description: This is a ve…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13445    Accepted Submission(s): 2856 Problem Description This is a very easy problem, your task is just calculate…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 37    Accepted Submission(s): 6 Problem Description This is a very easy problem, your task is just calculate el cam…
题目链接: Hdu 4725 The Shortest Path in Nya Graph 题目描述: 有n个点,m条边,每经过路i需要wi元.并且每一个点都有自己所在的层.一个点都乡里的层需要花费c元,问从1到N最小花费? 解题思路: 建图比较楠,刚开始的时候想到拆点,把一个点拆成两个,N+i表示点i所在层,对每个点对自己所在层建双向边,权值为0. 然后相邻层建双向边,权值为c.对w条点之间的边,正常建.但是写出来样例都GG了.发现对于同一层的点,在我建的图中可以免费来回跑,这样好像和题意有些…
HDU - 4725 The Shortest Path in Nya Graph http://acm.hdu.edu.cn/showproblem.php?pid=4725 This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not und…
he Shortest Path in Nya Graph Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 472564-bit integer IO format: %I64d      Java class name: Main   This is a very easy problem, your task is just calculate el camin…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11694    Accepted Submission(s): 2537 Problem Description This is a very easy problem, your task is just calculate…
The Shortest Path in Nya Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que camb…
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on.The Nya graph is an un…
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on. The Nya graph is an undirecte…
Problem Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on.The Nya graph is an un…
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on.  The Nya graph is an undirect…
This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on. The Nya graph is an undirected graph with…
This is a very easy problem, your task is just calculate el camino mas corto en un grafico, and just solo hay que cambiar un poco el algoritmo. If you do not understand a word of this paragraph, just move on. The Nya graph is an undirected graph with…
题目传送门 题意:有两种路径,每个点会分别在某一层,层相邻之间权值c.还有直接两点传送,花费w.问1到n的最短距离. 分析:1~n正常建边.然后n + a[i]表示i点在第a[i]层.然后再优化些就不会超时了. #include <cstdio> #include <algorithm> #include <cstring> #include <queue> using namespace std; const int N = 2e5 + 5; const…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题意:n个点,某个点属于某一层.共有n层.第i层的点到第i+1层的点和到第i-1层的点的代价均是C.另外有一类边连接两个点u.v,代价w.求1到n的最短路. 思路:拆点.n个点不动,编号1到n.将n层每层拆成两个点,第i层拆成n+i*2-1,n+i*2.相邻的层连边(n+i*2-1,n+(i+1)*2,C),(n+(i+1)*2-1,n+i*2,C).若顶点u属于第i层,连边(u,n+i*2-…
<题目链接> <转载于  >>> > 题目大意: 每个点放在一层,然后给了n个点,相邻的两层距离是固定的c,有额外m条无向边,然后求1到n的最短路径,如果没有则输出-1 . 解题分析: 本题建图是关键,需要注意的是,每一层不一定只有一个点.因此,如果两层之间建边时只是简单将上面的所有点的相互连接,那么取极端情况,当只有两层并且每层只有50000个点时,在O(N^2)的复杂度下,光是建图就已经爆了.所以我们对每一层进行拆点,但是如果每一层只拆成一个点的话,那么该层每…
题意:有n个点,每个点都在一个层内,层与层之间的距离为c,一个层内的点可以到达与它相邻的前后两个层的点,还有m条小路 ..时间真的是卡的很恶心啊... 借一下别人的思路思路: 这题主要难在建图上,要将层抽象出来成为n个点(对应编号依次为n+1~n+n),然后层与层建边,点与点建边,层与在该层上的点建边(边长为0),点与相邻层建边(边长为c). ps:这样处理就不用拆点了.不过要注意的是相邻两层必须都要有点才建边(不然会WA,可以参考我贴的数据)  借鉴自:http://www.myexcepti…
题意:给你n个点,m条无向边,每个点都属于一个层,相邻层的任意点都能花费C到另一层任意点,问你1到n最小路径 思路:没理解题意,以为每一层一个点,题目给的是第i个点的层数编号.这道题的难点在于建边,如果用最朴素的相邻层所有点互相连接,那么可能有5*10^4连5*10^4,复杂度O(n^2).这里我们用拆点(?大概),把每一层拆出一个点,作为每一层点和相邻层连接的中转站.这里要特别注意,同一层的点的距离不是0,所以我们建边不能全是无向边: 1.层与层无向边,权值C 2.层与同层点建单向边,权值0…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题目大意:有n层,n个点分布在这些层上,相邻层的点是可以联通的且距离为c,还有额外给出了m个条边,求1号点到n号点的最短距离,若无法到达则输出“-1”. 解题思路:最短路问题,主要是建图很难.如果按常规建法,用邻接表存每层的节点编号然后在建边肯定会超时,因为如果点只分布在两个层上,那建边的复杂度就是O(n^2)了.所以要改变一下思路,可以用n个虚拟点来代表n层,把连到该层的点都连接到虚拟点上,…
题意:N个点,每个点有一个层号L,相邻的两层 Li 与 Li+1 之间的距离为C.另外给出M条无向边,求从点1到点N的最短路. 分析:同一层之间的两点距离并不是0,这是一个小坑.依次把相邻两层的所有点连边会导致复杂度很高.可以将每一层看作一个点,但是把它和层中的点连边会导致同层的两点距离为0. 为了避免这种情况,可以将每层拆作两点,表示入点和出点.所以所建图中一共有3N个点.1~N为原图中的点,N+1~2*N为每层出点,2*N+1~3*N为每层入点.对每个在该层中的点u,将其连至出点N+i:再将…
4725 思路: 拆点建图跑最短路: 代码: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define maxn 200005 #define maxn_ 400005 #define maxque 2000005 #define INF 0x3f3f3f3f int n,m,head[maxn_],E[…