Advertisement

AcWing 1064:小国王(动态规划—DP—状态压缩DP)

阅读量:

原题传送门

在这里插入图片描述
复制代码
    #include<bits/stdc++.h>
    
    using namespace std;
    
    typedef long long ll;
    
    const int N = 12;//因为状态总数为10,但计算结果时利用的是舍弃最后一行求对应的方案数,状态下标从1开始遍历,要用到下标11,所以需要有12个状态下标
    const int M = 1 << 10;//最大的状态情况
    const int K = 110;//最多的国王数
    
    int n, m;
    int cnt[M];//cnt[i]记录状态i的国王数量
    vector<int> state;//记录所有合法的状态
    vector<int> head[M];//head[i]记录所有能转移到i的状态 
    ll f[N][K][M];//表示N行,已放置的国王数为K,这一行的状态为M的方案数 

全部评论 (0)

还没有任何评论哟~