HDU - 6006 (状压dp)

题目网址:点击打开链接

预处理很重要:


还有后来的;

(j|a[i][k])==j)
j这个状态一定包含a的状态,并且没有a也一样可以完成第i个机器,


神奇的位运算


#include 
#include
#include
#include
#include
#include
#include

using namespace std;

const int maxn=(1<<10)+2;
int dp[15][maxn];
int vis[105];
vector a[15];
vector project[15];
vector people[15];
int t,n,m;
int main()
{
    // freopen("foreign.in","r",stdin);
     // freopen("foreign.out","w",stdout);
    cin>>t;
    for(int ka=1;ka<=t;ka++)
    {
        memset(dp,0,sizeof(dp));
        cin>>n>>m;
        for(int i=0;i<=n;i++)
        {
            a[i].clear();
            project[i].clear();
        }
        for(int i=0;i>r;
            for(int j=0;j>x;
                project[i].push_back(x);
            }
        }
        for(int i=0;i>c;
            for(int j=0;j>x;
                people[i].push_back(x);
            }
        }
        for(int i=0;i<(1<


你可能感兴趣的:(动态规划)