上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 34 下一页
摘要: (1)这道题最多可以走两次,所以有0, 1, 2三种状态,所以我们要用三进制如果要用三进制,就要自己初始化两个数组, 一个是3的n次方,一个是三进制数的第几位的数字是什么void init(){ three[0] = 1; REP(i, 1, 11) three[i... 阅读全文
posted @ 2018-09-24 10:44 Sugewud 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 在平时写程序中,那些下标加1减1问题我总是纠结很久,现在总结一下(1)对称问题下标从0开始,是#include#define REP(i, a, b) for(int i = (a); i #define REP(i, a, b) for(int i = (a); i... 阅读全文
posted @ 2018-09-24 09:19 Sugewud 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 这道题就是Tsp问题,稍微加了些改变 注意以下问题 (1)每个点可以经过多次,这里就可以用弗洛伊德初始化最短距离 (2)在循环中集合可以用S表示更清晰一些 (3)第一维为状态,第二维为在哪个点,不要写混。 (4)在dp过程中0这个点是不用的,只用到1到n这个点 而实际上dp过程中用的是0到n-1,所 阅读全文
posted @ 2018-09-23 23:26 Sugewud 阅读(132) 评论(0) 推荐(0) 编辑
摘要: https://blog.csdn.net/accry/article/details/6607703 阅读全文
posted @ 2018-09-23 22:40 Sugewud 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 这题和poj 3254很像,但是更复杂了一些都属于棋盘里放东西,然后又各种各样的限制,然后求方案或者最大值(1)上一道题距离要大于1,这道题是大于2。所以判断的时候变成!(x & (x #include#include#define REP(i, a, b) for(... 阅读全文
posted @ 2018-09-23 22:38 Sugewud 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 状压dp入门题因为当前行的状态只和上一行有关所以可以一行一行来做因为m #include#include#define REP(i, a, b) for(int i = (a); i state;inline bool judge(int x) { return !... 阅读全文
posted @ 2018-09-23 17:20 Sugewud 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 这道题的钥匙只有10个,可以压成二进制这里有有句非常关键的话(k & door[x][y]) == door[x][y]一开始以为只要(k & door[x][y]) ==1就可以了后来发现如果door[x][y]为0的话,这句话就不对了。所以要包含这里没有门的情况所... 阅读全文
posted @ 2018-09-23 14:49 Sugewud 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 看到这道题n只有16,就可以想到状压dp每个人只有经过或者没经过,那就用1表示经过,0表示没经过但是不是当前在谁那里,所以再加一维来记录所以f[state][i]表示在物品在i,当前的状态是state情况下的最小总代价有几个细节要注意 (1)刷表法。要提前初始化为-1... 阅读全文
posted @ 2018-09-23 13:58 Sugewud 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 这道题正好复习了二项式定理所以答案就是a^n * b^m * c(n, k)然后注意一些细节我一开始写组合数只写一行的组合数即c[0] = 1; c[i] = c[i-1] * (n - i + 1) / i但是因为要去模,同时式子里面有除法,所以不能用这种方式必须从... 阅读全文
posted @ 2018-09-22 14:19 Sugewud 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 一开始只保留最后一位,交上去29#include#include#include#define REP(i, a, b) for(int i = (a); i #include#include#define REP(i, a, b) for(int i = (a); ... 阅读全文
posted @ 2018-09-22 10:26 Sugewud 阅读(122) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 34 下一页