状压dp
CoderCat.
大
展开
-
洛谷P1896_状压dp
本弱第一篇状压dp(在看了题解的前提下做的) 在n*n个格子内放m个国王,要求国王的四周即周围8个格子不能再有国王,求不同的放置方案数 将任意一行的一个状态看作是n位的二进制数,1表示放了国王,0表示没有放 dp[i][j][k] 表示前i行第j个状态,已经放置了k个国王的方案数; can[i]第i个状态的数字,num[i]第i个状态的1的个数; #include <cst...原创 2018-05-10 21:21:32 · 357 阅读 · 0 评论 -
洛谷P2704_状压dp
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n, m; int a[111];//将每一行处理为一串二进制数 int num[1<<10];//预处理数组 int dp[3]...原创 2018-05-17 16:18:56 · 255 阅读 · 0 评论 -
洛谷P1171_状压dp
dp[i][j]:状态为i,当前到达节点是j的最短路径 状态转移方程:dp[(1<< j)|i][j] = Min(dp[(1<< j)|i][j], dp[i][k]+a[k][j]); 宏定义的min比stl快 #include <cstdio> #include <cstring> #include <algorithm> #...原创 2018-05-17 17:07:30 · 200 阅读 · 0 评论