HDU 1373 XYZZY (spfa的特殊用法)】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1317 题目大意:有n个房间,编号1-n,房间之间有单向门连接.某人初始位于1号房间,且具有100点能量.此人要去n号房间,中途每经到一个房间Ri,其能量值会加上一个值ai,当其能量值小于等于0的时候会死掉.问此人能否到达n号房间.n<100, -100 <= ai <= 100. 分析:将房间看做结点,单向门看成单向边,形成一张有向图,问题转换为搜索一条从1号点能到达n号点的路径. 使用SP…
题意: 一个图, 点权代表走到该点可获得的能量值. 可正可负. 一个人从1 号出发,带有100点能量. 问是否有一种方案可使人在能量值>0的时候走到n. 思路: 这个题首先要注意点权. 其实就是这点的所有入边的边权都等于这点的点权. 要找长路, 而非最短路. 但是可以借助最短路的算法SPFA求. 最短路的算法SFPA主要是 队列 + 松弛 松弛操作直接关系到我们运行算法的目的----求最短路 如果与该点相邻的下一个点到源的距离可以因为通过该点中转而缩短 ,则更新此下一个点到源的最短距离, 也就相…
http://acm.hdu.edu.cn/showproblem.php?pid=1317 XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3514    Accepted Submission(s): 973 Problem Description It has recently been discovered how t…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4568 思路:首先spfa预处理出每对宝藏之间的最短距离以及宝藏到边界的最短距离,然后dp[state][u]表示当前在点u,状态为state的最短距离,然后更新就行. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue&g…
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1317 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29015#problem/F XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1701    Accepted S…
http://acm.hdu.edu.cn/showproblem.php?pid=1317 #include <cstdio> #include <queue> #include <cstring> #include <algorithm> #define maxn 1001 using namespace std; <<; int dis[maxn]; bool vis[maxn]; int n,m,x; int a[maxn]; bool…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 题目大意:通过货币的转换,来判断是否获利,如果获利则输出Yes,否则输出No. 这里介绍一个STL中的map容器去处理数据,map<string,int>V,M; 现在我目前的理解是将字符串转换成数字,然后就是根据spfa的模板找最短路了..哇哈哈( ⊙o⊙ )哇 #include <iostream> #include <cstdio> #include <m…
HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 19826    Accepted Submission(s): 4671 Problem Description 经过锦囊相助.海东集团最终度过了危机.从此,HDU的发展就一直顺风顺水,到了2050年.集团已经相当规模了.据说进入了钱江肉丝经济开发区500强. 这时…
题目链接 去年区域赛的题目,早就看过题目了,又是过了好久了... 这题状态转移,一看就知道应该是 线性的那种,不过细节真的不好处理,一直没想出怎么搞,期间也看过题解,好像没太看懂... dp[i][j]表示前i位相同,i之后两位为j的最小转动次数. 例如dp[i][x*10+y]  i+3位 为z(初始数字),x y z 转化为 ax ay az,ax肯定是第二个串的第i位,后两位随便就可以. 只要 预处理 xyz 转化为axayaz的情况,就行了.dp[0]初始化,100位直接Floyd,其他…
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4268 贪心思想,用set实现平衡树,但是set有唯一性,所以要用 multiset AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cstdlib> #include <cmath> #include &…