摘要:
一道简单的搜索剪枝,居然写了一个小时,首先判断棍子长的和是否能被四整除以及最长的棍子是不是大于边长(和的四分之一)。将棍长按照从长到短排序,记录搜索的边,构成三条边就是构成了一个正方形。/*Accepted 164K 235MS C++ 1396B 2012-07-27 14:30:28*/#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int MAXN = 1 << 7;int m, a[MA 阅读全文
摘要:
因为有花费的限制,所有存最短路的数组改为d[i][j],代表走到i点还剩余j的钱的最短路的值,relax时做一个剪枝,第一个条件是剩余钱数大于通过当前边所需的钱,第二,即将更新的值要小于当前到达N点的最短路的值。在更新最短值的时候,走过一条边要将钱数也更新,即剩余money减去过路费。/*Accepted 1936K 188MS C++ 1701B 2012-07-27 12:00:50*/#include<cstdio>#include<cstring>#include<cstdlib>#include<queue>#include<io 阅读全文
摘要:
SPFA判断是否存在最长路,只要存在负权环就存在最长路,两者是等价的。将N中货币看成N个点,从A点到B的最大可能值为(A点的当前值-AB的手续费)* AB的汇率。/*Accepted 428K 16MS C++ 1452B 2012-07-27 10:21:22*/#include<cstdio>#include<cstdlib>#include<cstring>#include<queue>#include<algorithm>#define cal(i, j) ( (val[i] - c[i][j]) * r[i][j])usin 阅读全文