摘要:
这道题就是Tsp问题,稍微加了些改变 注意以下问题 (1)每个点可以经过多次,这里就可以用弗洛伊德初始化最短距离 (2)在循环中集合可以用S表示更清晰一些 (3)第一维为状态,第二维为在哪个点,不要写混。 (4)在dp过程中0这个点是不用的,只用到1到n这个点 而实际上dp过程中用的是0到n-1,所 阅读全文
摘要:
https://blog.csdn.net/accry/article/details/6607703 阅读全文
摘要:
这题和poj 3254很像,但是更复杂了一些都属于棋盘里放东西,然后又各种各样的限制,然后求方案或者最大值(1)上一道题距离要大于1,这道题是大于2。所以判断的时候变成!(x & (x #include#include#define REP(i, a, b) for(... 阅读全文
摘要:
状压dp入门题因为当前行的状态只和上一行有关所以可以一行一行来做因为m #include#include#define REP(i, a, b) for(int i = (a); i state;inline bool judge(int x) { return !... 阅读全文
摘要:
这道题的钥匙只有10个,可以压成二进制这里有有句非常关键的话(k & door[x][y]) == door[x][y]一开始以为只要(k & door[x][y]) ==1就可以了后来发现如果door[x][y]为0的话,这句话就不对了。所以要包含这里没有门的情况所... 阅读全文
摘要:
看到这道题n只有16,就可以想到状压dp每个人只有经过或者没经过,那就用1表示经过,0表示没经过但是不是当前在谁那里,所以再加一维来记录所以f[state][i]表示在物品在i,当前的状态是state情况下的最小总代价有几个细节要注意 (1)刷表法。要提前初始化为-1... 阅读全文