状压dp,由于枚举两维状态会GG,所以只枚举当前位置前m个的状态,就是这个样子大概= =;

呆马:

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <cmath>
  6. #include <vector>
  7. #include <queue>
  8. #define inf 1000000007
  9. #define maxn 130
  10. #define maxm 18
  11.  
  12. using namespace std;
  13.  
  14. int f[][maxm][];
  15. int bit[][maxm];
  16. char s[maxn][maxm];
  17. int len[maxn];
  18. int n,m,mxbit,hi;
  19.  
  20. int up(int x, int y, int mask)
  21. {
  22. int cnt=len[x-], now=;;
  23. for (int i=y;i<m;i++) cnt-=bit[mask][i];
  24. for (int i=;i<y;i++) now+=bit[mask][i];
  25. if (bit[mask][m] && s[x-][cnt-]==s[x][now]) return ;
  26. return ;
  27. }
  28.  
  29. int lf(int x, int y, int mask)
  30. {
  31. int now=;
  32. for (int i=;i<y;i++) now+=bit[mask][i];
  33. if (bit[mask][] && s[x][now-]==s[x][now]) return ;
  34. return ;
  35. }
  36.  
  37. int cal(int y, int mask)
  38. {
  39. int now=;
  40. for (int i=;i<=y;i++) now+=bit[mask][i];
  41. return now;
  42. }
  43.  
  44. void get_mask()
  45. {
  46. for (int i=;i<=mxbit;i++)
  47. {
  48. int now=i;
  49. for (int j=;j<=m;j++)
  50. {
  51. bit[i][j]=now%;
  52. now/=;
  53. }
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59. scanf("%d%d",&n,&m);
  60. mxbit=(<<m)-;
  61. get_mask();
  62. for (int i=;i<=n;i++)
  63. {
  64. scanf("%s",s[i]);
  65. len[i]=strlen(s[i]);
  66. }
  67. for (int i=;i<=;i++)
  68. for (int j=;j<=m;j++)
  69. {
  70. for (int mask=;mask<=mxbit;mask++)
  71. f[i][j][mask]=-inf;
  72. }
  73. f[][][]=f[][][]=;
  74. for (int i=;i<=n;i++)
  75. {
  76. int p=i&;
  77. for (int j=;j<=m;j++)
  78. for (int mask=;mask<=mxbit;mask++)
  79. {
  80. int tmp=(mask<<)&mxbit;
  81. if (i== && j==) continue;
  82. if (j==)
  83. {
  84. if (cal(m,mask)!=len[i-]) continue;
  85. f[p][j][tmp]=max(f[p][j][tmp],f[p^][m][mask]);
  86. f[p][j][tmp|]=max(f[p][j][tmp|],f[p^][m][mask]+*up(i,j,mask));
  87. }
  88. else
  89. {
  90. if (cal(j-,mask)>len[i]) continue;
  91. f[p][j][tmp]=max(f[p][j][tmp],f[p][j-][mask]);
  92. if (cal(j-,mask)<len[i])
  93. f[p][j][tmp|]=max(f[p][j][tmp|],f[p][j-][mask]+*lf(i,j,mask)+*up(i,j,mask));
  94.  
  95. }
  96. }
  97. }
  98. int ans=;
  99. for (int mask=;mask<=mxbit;mask++)
  100. if (cal(m,mask)==len[n])
  101. ans=max(ans,f[n&][m][mask]);
  102. printf("%d\n",ans);
  103. return ;
  104. }

Connect

JAG Summer 2012 Day 4 C Connect的更多相关文章

  1. Red Gate系列之八 SQL Connect 1.1.1.19 Edition 数据库连接及操作工具 完全破解+使用教程

    原文:Red Gate系列之八 SQL Connect 1.1.1.19 Edition 数据库连接及操作工具 完全破解+使用教程 Red Gate系列之八 SQL Connect 1.1.1.19 ...

  2. 逻辑网络(Logical Network)

    Introduction The VMM documentation indicates that “A logical network is used to organize and simplif ...

  3. Netflix:当你按下“播放”的时候发生了什么?

    从用户端来看,使用Netflix是很简单的,按下播放键之后视频就像变魔术一样完美呈现了.看起来很容易是吧?然而实际不是这样的.了解过云计算的人可能会简单地以为,既然Netflix使用AWS来提供视频服 ...

  4. 打开Visual Studio 2012的解决方案 连接 Dynamics CRM 2011 的Connect to Dynamics CRM Server 在其工具下没有显示

    一.使用TFS 代码管理,发现Visual Studio 2012 菜单栏 工具下的Connect to Dynamics CRM Server 没有显示. 平常打开VS下的工具都会出现Connect ...

  5. connect/express 的参考

    1.Node.js[5] connect & express简介    对connect中间件的分类比较容易理解. http://www.cnblogs.com/luics/archive/2 ...

  6. Symantec Backup Exec 2012 Agent For Linux安装

    Backup Exec 2012 介绍 Backup Exec 2012 是一种为虚拟和物理环境提供保护的集成产品,能够简化备份和灾难恢复,并提供了无可匹敌的恢复功能.借助于强大的 Symantec ...

  7. SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

    本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...

  8. Windows Server 2012 虚拟化实战:域

    在Windows Server系统中,一些服务必需要构建在域的环境中,这不仅是为了统一验证和资源共享,同时也是为了网络安全.为构建虚拟化测试,我们需要先搭建域环境.之前先来大概了解一下域. 在使用工作 ...

  9. [转]Nodejs基础中间件Connect

    Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...

随机推荐

  1. java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0

    日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...

  2. spring mvc controller间跳转 重定向 传参 (转)

    转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景     需求:spring MVC框架contr ...

  3. 总结-javascript

    是否可见 $('.btn-accomplish').is(':visible') 通过ajax提交时, {a: vA | ''}; vA没有时,服务器得到的a为"0".如果是两丨, ...

  4. eclipse导入项目后,java文件无法编辑的问题

    新公司第一天,从svn checkout maven项目后,导入eclipse,发现文件的图标不对,如下图箭头所示,出现这个问题的原因, 是项目的的目录下没有.classpath文件,所以需要执行下m ...

  5. Clustering Methods: Benefits and Limitations

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION

  6. Java Basic - Annotation

    使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器.      从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理.   注解处理器类库( ...

  7. IE 6 ~ 9 CSS Hack 写法总结

    IE 6 ~ 9 CSS Hack 写法总结 24th 四, 14 lip2up [code lang="css"]_color: red;    /* ie6 */*color: ...

  8. Mysql 获取年级每个班前十学生的信息

    select * from Table1 a where 10>(select count(*) from Table1 where ClsNo=a.ClsNo and Score>a.S ...

  9. c语言文法简化版文法

    <源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...

  10. js保留两位小数

    js保留两位小数四舍五入: (Math.floor(until_price*100)/100).toFixed(2);//会四舍五入   保留两位小数 且不四舍五入(三种方式,请用最后一种): var ...