最近见到了好多跟排列有关的状压dp,好像略微会了一点,用 dp[i][s][j]表示第i位状态为s选择j的方案数,然后递推。

早起大概可以提高人的智商但是会导致人甚至不清,初始化写错了自闭了半个小时

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
int n;string s;
int cal(int num){
int res = ;
while(num){
res+=num%;
num>>=;
}
return res;
}
int dp[][<<][];
int main(){
ios::sync_with_stdio(false);
cin>>n>>s;s="**"+s;
for(int i=;i<=n;i++){
dp[][<<(i-)][i]=;
}
for(int i=;i<=n;i++) {
for (int j=;j<(<<n); j++) {
if(cal(j)!=i)continue;
for(int k=;k<=n;k++){
if(!((<<k-)&j))continue;
for(int l=;l<=n;l++) {
if(!((<<l-)&j))continue;
if (s[i]=='') {
if(!(l==*k||k==*l))
dp[i][j][k] += dp[i - ][j ^ ( << k - )][l];
} else {
if((l==*k||k==*l))
dp[i][j][k]+=dp[i-][j^(<<k-)][l];
}
dp[i][j][k]%=mod;
}
}
}
}
ll ans=;
for(int k=;k<=n;k++){
ans=(ans+dp[n][(<<n)-][k])%mod;
}
cout<<ans<<endl;
}

最新文章

  1. python 日志收集系统
  2. dede顶级栏目直接显示内容
  3. Palindrome Number ---- LeetCode 009
  4. 数据结构——Java实现二叉树
  5. asp.net中用回车代替按钮事件
  6. linux中删除目录
  7. ZOJ 3829 贪心 思维题
  8. Array.apply(null,{length:20})与new Array(20)的区别
  9. ORACLE使用数据泵导入导出部分表
  10. 【java】文件复制的简单实现
  11. 预测python数据分析师的工资
  12. Ansible 拷贝文件或目录
  13. Ugly Number II leetcode java
  14. 将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)
  15. NodeJS学习笔记六
  16. 6-Collision-hdu5114(小球碰撞)
  17. C语言的第零次作业
  18. angularjs1+nodejs搭建的个人博客 实战个人项目
  19. HDU3231 Box Relations——三维拓扑排序
  20. phpcms修改增加编辑时摘要自动提取的数量

热门文章

  1. jQuery 学习05——AJAX:定义、load()方法、get()/post()方法
  2. 动态规划-最长上升子序列(LIS)
  3. 【转】http的keep-alive和tcp的keepalive区别
  4. Python 汉字转拼音
  5. let&#39;s encrypt申请
  6. T SQL 将一列多行数据合并为一行
  7. Java代码质量监控工具Sonar安装
  8. typescript 与 js 开发 react 的区别
  9. 洛谷 P1739 表达式括号匹配
  10. m3u8转码