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 ...
随机推荐
- 基于小波变换的数字图像处理(MATLAB源代码)
基于小波变换的数字图像处理(MATLAB源代码) clear all; close all; clc;M=256;%原图像长度N=64; %水印长度[filename1,pathname]=uiget ...
- ASM FailGroup验证
ASM-FailGroup验证 一.FailGroup有效性验证 创建DiskGroup,在Redundancy选项 High:至少3块disk,至少3个failgroup,每一个extent存在1主 ...
- php上传大文件时,服务器端php.ini文件中需要额外修改的选项
几个修改点: 1.upload_max_filesize 上传的最大文件 2.post_max_size 上传的最大文件 3.max_execution_time 修改为0表示无超时,一直等待 4.m ...
- CentOS下通过yum安装svn及配置
CentOS下通过yum安装svn及配置 1.环境centos5.5 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata s ...
- hibernate学习(8)——事务.连接池.锁 相关设置
1.整合c3p0(连接池) 步骤一:导入c3p0 jar包 步骤二:hibernate.cfg.xml 配置 hibernate.connection.provider_class org.hiber ...
- VC中对文件的读写
http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理 ...
- tomcat底层原理实现
1.首先完成一个server类,用来接收客户端的请求:代码都在一个while(true)循环中,模拟tomcat一直在启动,其中绑定一个端口,用来监听一个端口,然后创建一个输入流,获取请求的输入流,然 ...
- django 1.7之后python manage.py syncdb没有了
在命令行输入python manage.py createsuperuser按照提示输入即可记得先初始化表. django>1.7 python manage.py makemigrations ...
- 《奥威Power-BI案例应用:带着漫画看报告》腾讯课程开课啦
元旦小假期过去了,不管是每天只给自己两次下床机会的你,还是唱K看电影逛街样样都嗨的你,是时候重振旗鼓,重新上路了!毕竟为了不给国家的平均工资水平拖后腿,还是要努力工作的.话说2016年已经过去了,什么 ...
- linux vim
wq 强制性写入文件并退出.即使文件没有被修改也强制写入,并更新文件的修改时间.x 写入文件并退出.仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间.