BZOJ-1879 Bill的挑战 状态压缩DP
来源:互联网 发布:java电子商务系统源码 编辑:程序博客网 时间:2024/06/09 16:27
MD....怎么又是状压.......
1879: [Sdoi2009]Bill的挑战
Time Limit: 4 Sec Memory Limit: 64 MB
Submit: 537 Solved: 280
[Submit][Status][Discuss]
Description
Input
本题包含多组数据。 第一行:一个整数T,表示数据的个数。 对于每组数据: 第一行:两个整数,N和K(含义如题目表述)。 接下来N行:每行一个字符串。
Output
1
2 1
a?
?b
Sample Input
50
Sample Output
对于30%的数据,T ≤ 5,M ≤ 5,字符串长度≤ 20;
对于70%的数据,T ≤ 5,M ≤ 13,字符串长度≤ 30;
对于100%的数据,T ≤ 5,M ≤ 15,字符串长度≤ 50。
HINT
Source
Day2
一看数据范围,50?感觉不能状压啊...哦,M<=15.....
思路比较简单:
f【i】【j】表示 匹配到第i位,时状态为j的方案数;
具体的转移:
f[i+1][j&(g[i][l])]+=f[i][j],f[i+1][j&(g[i][l])]%=p;
用g来存储状态,枚举状态即可;
PS:当天晚上调了20多分钟没调完....被YveH神犇叫去颓废了,Carry了他一盘后睡觉去了...第二天调完1A辣
code:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int read(){ int x=0,f=1; char ch=getchar(); while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();} while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();} return x*f;}#define p 1000003int t,n,k;char s[20][60];int f[60][1<<15],g[60][1<<5];void DP(){ memset(f,0,sizeof(f)); memset(g,0,sizeof(g)); int len=strlen(s[1]); for (int i=0; i<len; i++) for (int j=1; j<=n; j++) for (int l=0; l<26; l++) if (s[j][i]=='?' || s[j][i]=='a'+l) g[i][l]|=1<<(j-1); f[0][(1<<n)-1]=1; for (int i=0; i<len; i++) for (int j=0; j<(1<<n); j++) if (f[i][j]!=0) for (int l=0; l<26; l++) f[i+1][j&(g[i][l])]+=f[i][j],f[i+1][j&(g[i][l])]%=p; int ans=0; for (int i=0; i<(1<<n); i++) { int now=i,tmp=0; while (now) tmp+=now&1,now>>=1; if (tmp==k) ans=(ans+f[len][i])%p; } printf("%d\n",ans);}int main(){ t=read(); while (t--) { n=read(),k=read(); for (int i=1; i<=n; i++) scanf("%s",s[i]); DP(); } return 0;}
0 0
- BZOJ-1879 Bill的挑战 状态压缩DP
- BZOJ 1879: [Sdoi2009]Bill的挑战|状压DP
- 【50.54%】【BZOJ 1879】[Sdoi2009]Bill的挑战
- bzoj 1879 [Sdoi2009]Bill的挑战
- BZOJ 1879 [Sdoi2009] Bill的挑战
- bzoj 1879 [Sdoi2009]Bill的挑战
- 1879: [Sdoi2009]Bill的挑战 状压DP
- [bzoj 1879] [Sdoi2009]Bill的挑战:状压DP,自创数学公式(?)
- 【bzoj1879】【SDOI2009】【bill的挑战】【状压dp】
- BZOJ 1087 (状态压缩DP)
- Bill的挑战(set)
- Bill的挑战
- BZOJ 1087 互不侵犯的国王 状态压缩dp
- BZOJ-1226 学校食堂Dining 状态压缩DP
- BZOJ 1087 互不侵犯King 状态压缩DP
- 【SDOI2009】【BZOJ1879】Bill的挑战
- BZOJ1879: [Sdoi2009]Bill的挑战
- poj1185 状态压缩的dp
- poj 2823 滑动窗口 单调队列
- Java基础-强引用、弱引用、软引用、虚引用
- linux php imagick 安装
- VirtualBox中安装CentOS5.5
- 简单实现javaftp服务器
- BZOJ-1879 Bill的挑战 状态压缩DP
- nf51822 ---看门狗(WDT)
- 安卓基础:自定义控件实现ViewPager指示器
- File类通过递归列出目录的结构
- hdu2079选课时间(背包)
- DOM事件处理程序学习随笔1(IMOOC)
- 设计模式——装饰者模式
- 关于在servlet和action中返回json数据的一些问题
- Java String理解