JAG Summer 2012 Day 4 C Connect
状压dp,由于枚举两维状态会GG,所以只枚举当前位置前m个的状态,就是这个样子大概= =;
呆马:
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- #include <cmath>
- #include <vector>
- #include <queue>
- #define inf 1000000007
- #define maxn 130
- #define maxm 18
- using namespace std;
- int f[][maxm][];
- int bit[][maxm];
- char s[maxn][maxm];
- int len[maxn];
- int n,m,mxbit,hi;
- int up(int x, int y, int mask)
- {
- int cnt=len[x-], now=;;
- for (int i=y;i<m;i++) cnt-=bit[mask][i];
- for (int i=;i<y;i++) now+=bit[mask][i];
- if (bit[mask][m] && s[x-][cnt-]==s[x][now]) return ;
- return ;
- }
- int lf(int x, int y, int mask)
- {
- int now=;
- for (int i=;i<y;i++) now+=bit[mask][i];
- if (bit[mask][] && s[x][now-]==s[x][now]) return ;
- return ;
- }
- int cal(int y, int mask)
- {
- int now=;
- for (int i=;i<=y;i++) now+=bit[mask][i];
- return now;
- }
- void get_mask()
- {
- for (int i=;i<=mxbit;i++)
- {
- int now=i;
- for (int j=;j<=m;j++)
- {
- bit[i][j]=now%;
- now/=;
- }
- }
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- mxbit=(<<m)-;
- get_mask();
- for (int i=;i<=n;i++)
- {
- scanf("%s",s[i]);
- len[i]=strlen(s[i]);
- }
- for (int i=;i<=;i++)
- for (int j=;j<=m;j++)
- {
- for (int mask=;mask<=mxbit;mask++)
- f[i][j][mask]=-inf;
- }
- f[][][]=f[][][]=;
- for (int i=;i<=n;i++)
- {
- int p=i&;
- for (int j=;j<=m;j++)
- for (int mask=;mask<=mxbit;mask++)
- {
- int tmp=(mask<<)&mxbit;
- if (i== && j==) continue;
- if (j==)
- {
- if (cal(m,mask)!=len[i-]) continue;
- f[p][j][tmp]=max(f[p][j][tmp],f[p^][m][mask]);
- f[p][j][tmp|]=max(f[p][j][tmp|],f[p^][m][mask]+*up(i,j,mask));
- }
- else
- {
- if (cal(j-,mask)>len[i]) continue;
- f[p][j][tmp]=max(f[p][j][tmp],f[p][j-][mask]);
- if (cal(j-,mask)<len[i])
- f[p][j][tmp|]=max(f[p][j][tmp|],f[p][j-][mask]+*lf(i,j,mask)+*up(i,j,mask));
- }
- }
- }
- int ans=;
- for (int mask=;mask<=mxbit;mask++)
- if (cal(m,mask)==len[n])
- ans=max(ans,f[n&][m][mask]);
- printf("%d\n",ans);
- return ;
- }
Connect
JAG Summer 2012 Day 4 C Connect的更多相关文章
- 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 ...
- 逻辑网络(Logical Network)
Introduction The VMM documentation indicates that “A logical network is used to organize and simplif ...
- Netflix:当你按下“播放”的时候发生了什么?
从用户端来看,使用Netflix是很简单的,按下播放键之后视频就像变魔术一样完美呈现了.看起来很容易是吧?然而实际不是这样的.了解过云计算的人可能会简单地以为,既然Netflix使用AWS来提供视频服 ...
- 打开Visual Studio 2012的解决方案 连接 Dynamics CRM 2011 的Connect to Dynamics CRM Server 在其工具下没有显示
一.使用TFS 代码管理,发现Visual Studio 2012 菜单栏 工具下的Connect to Dynamics CRM Server 没有显示. 平常打开VS下的工具都会出现Connect ...
- connect/express 的参考
1.Node.js[5] connect & express简介 对connect中间件的分类比较容易理解. http://www.cnblogs.com/luics/archive/2 ...
- Symantec Backup Exec 2012 Agent For Linux安装
Backup Exec 2012 介绍 Backup Exec 2012 是一种为虚拟和物理环境提供保护的集成产品,能够简化备份和灾难恢复,并提供了无可匹敌的恢复功能.借助于强大的 Symantec ...
- SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑
本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...
- Windows Server 2012 虚拟化实战:域
在Windows Server系统中,一些服务必需要构建在域的环境中,这不仅是为了统一验证和资源共享,同时也是为了网络安全.为构建虚拟化测试,我们需要先搭建域环境.之前先来大概了解一下域. 在使用工作 ...
- [转]Nodejs基础中间件Connect
Nodejs基础中间件Connect 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的J ...
随机推荐
- java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0
日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...
- spring mvc controller间跳转 重定向 传参 (转)
转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架contr ...
- 总结-javascript
是否可见 $('.btn-accomplish').is(':visible') 通过ajax提交时, {a: vA | ''}; vA没有时,服务器得到的a为"0".如果是两丨, ...
- eclipse导入项目后,java文件无法编辑的问题
新公司第一天,从svn checkout maven项目后,导入eclipse,发现文件的图标不对,如下图箭头所示,出现这个问题的原因, 是项目的的目录下没有.classpath文件,所以需要执行下m ...
- Clustering Methods: Benefits and Limitations
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION
- Java Basic - Annotation
使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器. 从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理. 注解处理器类库( ...
- IE 6 ~ 9 CSS Hack 写法总结
IE 6 ~ 9 CSS Hack 写法总结 24th 四, 14 lip2up [code lang="css"]_color: red; /* ie6 */*color: ...
- Mysql 获取年级每个班前十学生的信息
select * from Table1 a where 10>(select count(*) from Table1 where ClsNo=a.ClsNo and Score>a.S ...
- c语言文法简化版文法
<源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...
- js保留两位小数
js保留两位小数四舍五入: (Math.floor(until_price*100)/100).toFixed(2);//会四舍五入 保留两位小数 且不四舍五入(三种方式,请用最后一种): var ...