http://www.lydsy.com/JudgeOnline/problem.php?id=1879

f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数

枚举下一个字符是什么

计算加上这个自字符之后新匹配到的状态s

f[i+1][s]+=f[i][j]

转移的时候判断如果f[i][j]==0,就不用枚举字符了

没有这个复杂度在6e8,TLE

其实可以预处理 g[i][j]表示已经匹配了长度为i,再加字符j 可以匹配到的状态

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; const int N=<<;
const int mod=; char s[][]; int f[][N]; int bit[]; int count(int x)
{
int sum=;
while(x)
{
sum+=x&;
x>>=;
}
return sum;
} int main()
{
bit[]=;
for(int i=;i<=;++i) bit[i]=bit[i-]<<;
int T;
scanf("%d",&T);
int n,t,m,len;
int S,nj;
int ans;
while(T--)
{
scanf("%d%d",&n,&t);
memset(f,,sizeof(f));
m=;
for(int i=;i<=n;++i)
{
scanf("%s",s[i]+);
len=strlen(s[i]+);
m=max(m,len);
}
S=bit[n];
for(int i=;i<;++i)
{
nj=;
for(int j=;j<=n;++j)
if(s[j][]==i+'a' || s[j][]=='?') nj+=bit[j-];
f[][nj]++;
}
for(int i=;i<m;++i)
for(int j=;j<S;++j)
if(f[i][j])
for(int k=;k<;++k)
{
nj=;
for(int l=;l<=n;++l)
if(j&bit[l-])
if(s[l][i+]==k+'a' || s[l][i+]=='?')
nj+=bit[l-];
f[i+][nj]+=f[i][j];
f[i+][nj]-=f[i+][nj]>=mod ? mod : ;
}
ans=;
for(int i=;i<S;++i)
if(count(i)==t)
{
ans+=f[m][i];
ans-=ans>=mod ? mod : ;
}
cout<<ans<<'\n';
}
}

1879: [Sdoi2009]Bill的挑战

Time Limit: 4 Sec  Memory Limit: 64 MB
Submit: 919  Solved: 477
[Submit][Status][Discuss]

Description

Input

本题包含多组数据。 
第一行:一个整数T,表示数据的个数。 
对于每组数据: 
第一行:两个整数,N和K(含义如题目表述)。 
接下来N行:每行一个字符串。
T ≤ 5,M ≤ 15,字符串长度≤ 50。

Output

如题

Sample Input

5
3 3
???r???
???????
???????
3 4
???????
?????a?
???????
3 3
???????
?a??j??
????aa?
3 2
a??????
???????
???????
3 2
???????
???a???
????a??

Sample Output

914852
0
0
871234
67018

bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战的更多相关文章

  1. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  2. [bzoj1879][Sdoi2009]Bill的挑战_动态规划_状压dp

    Bill的挑战 bzoj-1879 Sdoi-2009 题目大意: 注释:$1\le t \le 5$,$1\le m \le 15$,$1\le length \le 50$. 想法: 又是一个看数 ...

  3. bzoj千题计划181:bzoj1878: [SDOI2009]HH的项链

    http://www.lydsy.com/JudgeOnline/problem.php?id=1878 之前用莫队做的,现在用树状数组 把每种数的第一个出现位置在树状数组中+1 nxt[i] 记录i ...

  4. bzoj千题计划288:bzoj1876: [SDOI2009]SuperGCD

    http://www.lydsy.com/JudgeOnline/problem.php?id=1876 高精压位GCD 对于  GCD(a, b)  a>b 若 a 为奇数,b 为偶数,GCD ...

  5. bzoj千题计划287:bzoj1228: [SDOI2009]E&D

    http://www.lydsy.com/JudgeOnline/problem.php?id=1228 打SG函数表,找规律: 若n是奇数m是奇数,则SG(n,m)=0 若n是偶数m是偶数,则SG( ...

  6. bzoj千题计划286:bzoj1226: [SDOI2009]学校食堂Dining

    http://www.lydsy.com/JudgeOnline/problem.php?id=1226 关键点:一个人只能忍受 ‘紧跟’ 在他 后面的b个人比他先打到饭 dp[i][j][k] 前i ...

  7. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔

    http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...

  8. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  9. bzoj千题计划177:bzoj1858: [Scoi2010]序列操作

    http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...

随机推荐

  1. 【ORACLE】oracle11g dg搭建

    --------------------------------每个节点和DG------------------------------------------------------------- ...

  2. effective c++ 笔记 (41-44)

    //---------------------------15/04/25---------------------------- //#41   了解隐式接口和编译期多态 { //  1:面向对象编 ...

  3. hdu 2036:改革春风吹满地(叉积求凸多边形面积)

    改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  4. 【Unity Shader】从NDC(归一化的设备坐标)坐标转换到世界坐标的数学原理

    从NDC(归一化的设备坐标)坐标转换到世界坐标要点 参考资料 How to go from device coordinates back to worldspace http://feepingcr ...

  5. Catlike学习笔记(1.1)-使用Unity实现一个钟表

    最近发现『Catlike系列教程』觉得内容真的很赞,感觉有很多地方涉及到了我的知识盲点,如果真的可以照着做下来一遍的话应该收获颇丰.因为教程很长所以逐字翻译不太可能了(主要是翻译的太差).基本上就是把 ...

  6. Kafka高性能吞吐关键技术分析

    Apache Kafka官网提供的性能说明: Benchmarking Apache Kafka: 2 Million Writes Per Second (On Three Cheap Machin ...

  7. linux 常用命令-用户、用户组管理

    注:本篇只涉及常用命令,全部命令可以通过help帮助查看. (1)type useradd   #查看命令属于内部命令还是外部命令,内部命令是嵌在linux的shell中,外部命令存储在路径中 (2) ...

  8. 【跨域】jsonp跨域实现方法

    封装原生jsonp: 以跨域调取豆瓣电影最热榜单为例: function $jsonp(url,data,callback){ var funcName = 'jsonp_cb' + Math.ran ...

  9. c#public、private、protected、internal、protected internal

    public 公有访问.不受任何限制.private 私有访问.只限于本类成员访问,子类,实例都不能访问.protected 保护访问.只限于本类和子类访问,实例不能访问.internal 内部访问. ...

  10. 一本通1639Biorhythms

    1639:Biorhythms 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 原题来自:POJ 1006 人生来就有三个生理周期,分别为体力.感情和智力周期 ...