1. 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

  1. 一看数据范围,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来存储状态,枚举状态即可;

  1. PS:当天晚上调了20多分钟没调完....被YveH神犇叫去颓废了,Carry了他一盘后睡觉去了...第二天调完1A

code:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. int read()
  8. {
  9. int x=0,f=1; char ch=getchar();
  10. while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
  11. while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
  12. return x*f;
  13. }
  14. #define p 1000003
  15. int t,n,k;
  16. char s[20][60];
  17. int f[60][1<<15],g[60][1<<5];
  18. void DP()
  19. {
  20. memset(f,0,sizeof(f)); memset(g,0,sizeof(g));
  21. int len=strlen(s[1]);
  22. for (int i=0; i<len; i++)
  23. for (int j=1; j<=n; j++)
  24. for (int l=0; l<26; l++)
  25. if (s[j][i]=='?' || s[j][i]=='a'+l)
  26. g[i][l]|=1<<(j-1);
  27. f[0][(1<<n)-1]=1;
  28. for (int i=0; i<len; i++)
  29. for (int j=0; j<(1<<n); j++)
  30. if (f[i][j]!=0)
  31. for (int l=0; l<26; l++)
  32. f[i+1][j&(g[i][l])]+=f[i][j],f[i+1][j&(g[i][l])]%=p;
  33. int ans=0;
  34. for (int i=0; i<(1<<n); i++)
  35. {
  36. int now=i,tmp=0;
  37. while (now) tmp+=now&1,now>>=1;
  38. if (tmp==k) ans=(ans+f[len][i])%p;
  39. }
  40. printf("%d\n",ans);
  41. }
  42. int main()
  43. {
  44. t=read();
  45. while (t--)
  46. {
  47. n=read(),k=read();
  48. for (int i=1; i<=n; i++)
  49. scanf("%s",s[i]);
  50. DP();
  51. }
  52. return 0;
  53. }

BZOJ-1879 Bill的挑战 状态压缩DP的更多相关文章

  1. BZOJ 1087 互不侵犯King 状态压缩DP

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1087 题目大意; 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国 ...

  2. BZOJ 1072: [SCOI2007]排列perm 状态压缩DP

    1072: [SCOI2007]排列perm Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为 ...

  3. BZOJ 1087状态压缩DP

    状态压缩DP真心不会写,参考了别人的写法. 先预处理出合理状态, 我们用二进制表示可以放棋子的状态,DP[I][J][K]:表示现在处理到第I行,J:表示第I行的状态,K表示现在为止一共放的棋子数量. ...

  4. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  5. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  6. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  7. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  8. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  9. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

随机推荐

  1. 第25章 SEH结构化异常处理_未处理异常及向量化异常

    25.1 UnhandledExceptionFilter函数详解 25.1.1 BaseProcessStart伪代码(Kernel32内部) void BaseProcessStart(PVOID ...

  2. man命令中的文本操作

    转自:http://www.cnblogs.com/chengmo/archive/2010/10/26/1861809.html 下面说下less命令操作: 光标移动操作: e  ^E  j  ^N ...

  3. P1195 口袋的天空

    P1195 口袋的天空 题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空. 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖. 题目描述 给你云朵的个数N,再给你M个关 ...

  4. JS案例之5——移动端触屏滑动

    移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件 ...

  5. 用python简单处理图片(3):添加水印

    python版本:3.4 Pillow版本:3.0 一.添加文字水印 from PIL import Image, ImageDraw,ImageFont im = Image.open(" ...

  6. C++系列: 如何将十六机制的字符串转成整数

    bool convertHexStringToInt(char* pstrHex, unsigned long* pResult) { ) return false; else return true ...

  7. [CareerCup] 14.4 Templates Java模板

    14.4 Explain the difference between templates in C++ and generics in Java. 在Java中,泛式编程Generic Progra ...

  8. form表单用ge方式提交时ie显示中文参数乱码

    有网友说 通过给form表单添加accept-charset="gb2312"和 onsubmit="document.charset='gb2312'" 但这 ...

  9. JQuery ztree 异步加载实践

    本来要做一个文件目录浏览界面,需要遍历所有的文件和目录,很显然一次性读取时很费时费力的一件事情. 因此就需要做异步加载.... 不过网上的几篇帖子还挺坑的!原始参考:JQuery异步加载实例,相对来说 ...

  10. Samba实现Linux与Window文件的传输

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...