题目链接

bzoj 1879: [Sdoi2009]Bill的挑战

题解

n<=15,装压吧

对所有字符串进行装压

可以预处理一个数组can[i][j]表示所有的字符串中,有哪些可以在第i位匹配桑z

然后dp[i][j]表示T串第i位上取字符所对的状态j的方案

代码

#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 1000003
using std::max;
using std::min;
inline int read() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {if(c=='-') f=-1;c=getchar() ;}
while(c<='9'&&c>='0') x=x*10+c-'0',c=getchar() ;
return x*f;
}
int T,n,k;
char a[17][57];
int dp[57][1<<17];
int can[57][39];
void work() {
memset(dp,0,sizeof dp);
memset(can,0,sizeof can);
int po=(1<<n)-1;
int len=strlen(a[1]);
// printf("%d %c\n",len,a[1][1]);
for(int i=0;i<len;++i)
for(char j='a';j<='z';++j)
for(int k=1;k<=n;++k)
if(a[k][i]=='?'||a[k][i]==j)
can[i][j-'a']|=(1<<k-1);
dp[0][po]=1;
for(int i=0;i<len;++i)
for(int j=0;j<=po;++j) {
if(dp[i][j])
for(char k='a'-'a';k<='z'-'a';++k)
dp[i+1][can[i][k]&j]=(dp[i+1][can[i][k]&j]+dp[i][j])%mod;
}
int ans=0;
for(int cnt,i=0;i<=po;++i) {
cnt=0;
for(int j=1;j<=po;j<<=1) cnt+=(i&j) ? 1:0;
if(cnt==k) ans=(ans+dp[len][i])%mod;
}
printf("%d\n",ans);
return;
}
int main() {
T=read();
for(;T--;) {
n=read(),k=read();
for(int i=1;i<=n;++i) scanf("%s",a[i]);
work();
}
return 0;
}

最新文章

  1. 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
  2. CMD和AMD区别的概括
  3. wpf数据绑定
  4. hdu5037 Frog (贪心)
  5. 剑指offer系列52---约瑟夫环问题
  6. 李洪强iOS开发Swift篇---12_NSThread线程相关简单说明
  7. C++学习笔记3——类的封装(1)
  8. Group DataList
  9. Corn Fields poj3254(状态压缩DP)
  10. Codeforces 1036E Covered Points (线段覆盖的整点数)【计算几何】
  11. AE与C#入门笔记
  12. EF Code First学习笔记 初识Code First(转)
  13. SharePoint 网站管理-PowerShell
  14. Java中的默认构造函数
  15. LaTeX排版设置图表的位置 Positioning images and tables
  16. 在安装好MySql后忘记root的密码,或者给root添加密码
  17. JVM 内存调优 与 实际案例
  18. BIND简易教程(3):DNSSec配置
  19. bytes和str之间的转换
  20. 常见配置Server错误导致import 包无效等问题解决

热门文章

  1. freemaker示例
  2. day01--python基础1
  3. python负数除法与模运算
  4. ASP.NET Core [1]:Hosting(笔记)
  5. (转) Unreal的HLSL交叉编译-UEAPI
  6. 使用dib element proliant-tools制作deploy image
  7. [转载]有关如何入门ACM
  8. 使用“\n\t”将多行字符串拼接起来
  9. IIS7 无法显示 htm js 图片 css的问题
  10. resultMap与resultType的区别等容易混淆的概念