状压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的更多相关文章

  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. 随机数是骗人的,.Net、Java、C为我作证(转)

    几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数.比如在.Net中编写下面的代码: Random rand = ne ...

  2. linux软件包管理(下)

    在vi配置文件的编写的时候我们发现#并不能注释掉一行的信息 那什么才是linux标准的注释信息呢 查看软件对应的软件包命令 rpm –ap| grep vim 大多example是需要的事例文档  双 ...

  3. 1.线性表-Array

    fatal.h #include <stdio.h> #include <stdlib.h> #define Error( Str ) FatalError( Str ) #d ...

  4. Elasticsearch 运维实战之1 -- 集群规划

    规划一个可用于生产环境的elasticsearch集群. 集群节点划分 整个集群的节点分为以下三种主要类型 Master nodes -- 负责维护集群状态,不保存index数据, 硬件要求: 一般性 ...

  5. Ubuntu 设置当前用户sudo免密码

    方法1 # 备份 /etc/sudoers sudo cp /etc/sudoers . #打开 /etc/sudoers sudo visudo # 在文件末尾加入 kube ALL=NOPASSW ...

  6. 然并卵,腾讯QQ认证空间又再次关闭申请

    昨天发布的腾讯QQ认证空间又开放申请的消息,此消息一放出,大家都去关注认证的事情,而马浩周发现在4月27日下午4-5点,腾讯QQ空间认证又再次关闭页面开放申请的通知,变成了以前停止审核的通知了. 可能 ...

  7. Bad Request - Request Too Long

    Bad Request - Request Too Long HTTP Error 400. The size of the request headers is too long. 该错误原因导致 ...

  8. 阿里云服务器Linux CentOS安装配置(十)安装Discuz

    0.登录阿里云,停止实例,重新初始化磁盘. 如果不这么做,安装的discuz页面样式丢失,没法解决. 1.安装apache yum install httpd httpd-devel -y 2.安装m ...

  9. angularJS实现二级联动查询以及自定义过滤器的使用

    <!DOCTYPE html><html lang="en"><head>    <meta http-equiv="Conte ...

  10. cloudera learning2:HDFS

    存入HDFS的文件会按块(block)划分,默认每块128MB.默认1个block还有2个备份.备份增加了数据的可靠性和提高计算效率(数据本地化). HDFS部署可选择不支持HA,也可选择支持HA. ...