摘要:
题意:如下图所示,给出n*m的网格,其中P表示能放炮兵,H表示不能放,每只炮兵的射程如图涂黑部分。在防止误伤的前提下(任何一个炮兵不在其他炮兵的射程内),问最多能拜访多少炮兵。(n 7 #include 8 #include 9 #include 10 11 using namespace std; 12 13 #define CLR(x) memset(x, 0, sizeof(x)) 14 #define PB push_back 15 16 int n, m, sz; 17 bool a[200][20]; 18 int d[105][70][70]; 19 vect... 阅读全文
摘要:
题意:用1*2的瓷砖拼出m*n的矩形。问有多少种拼法。解法:设d[i][j]表示第i行状态为j的情况下,最多能有多少种拼法,对于状态j,1表示为竖着放置的瓷砖且它横跨i和i+1两行,其余皆用0表示。d[i][j] += d[i-1][k],其中k表示能转移到j的状态。tag:状压dp 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-11-19 01:01 4 * File Name: DP-POJ-2411.cpp 5 */ 6 #include 7 #include 8 #include 9 #include 10 11 u... 阅读全文
摘要:
题意:在m*n的矩阵上,1表示能放牛,0表示不能放。要求放的牛不能相邻(上下相邻或者左右相领),问放牛的方法种数。解法:设d[i][j]表示第i行状态为j的情况下,能放的牛的数量。d[i][j] += d[i-1][k],其中k表示能转移到j的状态,num(j)表示状态为j的行所放的牛的数量。当然,还要判断一下状态j是不是能放在第i行。tag:状压dp 1 /* 2 * Author: Plumrain 3 * Created Time: 2013-11-18 23:37 4 * File Name: DP-POJ-3254.cpp 5 */ 6 #include 7 #incl... 阅读全文