摘要:
该题题意非常有意思,问是否能够时空穿梭。这题与前面所做的POJ1860很相似,只是这里说明两点:1.所以逇路都是双向的,洞是单向的。2.bellman算法中,需要虚拟出一个节点,让其能够通向所有的节点(或者直接将所有点的距离都赋值为相同值)。这样就只要一次bellman算法就可以了。代码如下:#include <cstring>#include <cstdlib>#include <cstdio>#define MAXN 6000using namespace std;int N, M, W, dis[505];struct edge{ int a, b, 阅读全文
摘要:
该题是给定某一货币,然后再给定一些兑换的条件,问能否使得钱币总数增加,是不是非常诱人呢?对该题的一个转化就是如果在转化的过程中出现了环的话,那么我们就可以在这个环内不停的进行转化,以致钱币数量无穷大,再反过来兑换就可以得到原始的币种了,而且一定会增加。利用bellman算法能过得到是否存在环,由于最长的环的路径长度是N-1(N各节点)所以我们只要对所有的边进行N-1次松弛,然后再看是否还可以继续松弛来判断是否有环的形成。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#define MAXN 阅读全文
摘要:
该题为一道纯模拟题,不需要任何算法。在选择棋子的时候定义好排序规则,将其一次排序出来。代码如下:#include <cstring>#include <cstdlib>#include <cstdio>#include <cctype>#include <algorithm>using namespace std;int pos = 0;int hash[255];struct Node{ char kind; int x, y; bool operator < (Node t) const { if (hash[kind] ! 阅读全文