poj 1699 Best Sequence
http://poj.org/problem?id=1699
题意:给你n个长度为L的序列,求包含这几个序列的最短长度。
先预处理每两个序列之间的关系,然后dfs枚举就行。
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 500
using namespace std;
const int inf=<<; char str[maxn][maxn];
int c[maxn][maxn];
int n;
bool vis[maxn]; int make_l(int s,int t)
{
int cnt=;
int k1=strlen(str[s]);
int k2=strlen(str[t]);
for(int i=; i<=k1&&i<=k2; i++)
{
bool flag=false;
for(int j=; j<i; j++)
{
if(str[s][k1-i+j]!=str[t][j])
{
flag=true;
break;
}
}
if(!flag) cnt=i;
}
return k1-cnt;
} int dfs(int src,int step)
{
int sum=inf;
if(step==n)
{
int kl=strlen(str[src]);
return kl;
}
for(int i=; i<=n; i++)
{
if(!vis[i])
{
vis[i]=true;
int sum1=c[src][i];
sum1+=dfs(i,step+);
vis[i]=false;
sum=min(sum,sum1);
}
}
return sum;
} int main()
{
int t1;
scanf("%d",&t1);
while(t1--)
{
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%s",str[i]);
}
memset(c,,sizeof(c));
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
if(i==j) continue;
c[i][j]=make_l(i,j);
}
}
/*for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}*/
memset(vis,false,sizeof(vis));
int ans=inf;
for(int i=; i<=n; i++)
{
vis[i]=true;
ans=min(ans,dfs(i,));
vis[i]=false;
}
printf("%d\n",ans);
}
return ;
}
poj 1699 Best Sequence的更多相关文章
- poj 1699 Best Sequence(AC自己主动机+如压力DP)
id=1699" target="_blank" style="">题目链接:poj 1699 Best Sequence 题目大意:给定N个D ...
- POJ 1699 Best Sequence dfs
题目: http://poj.org/problem?id=1699 无意间A了..超时一次,加了一句 if(len > ans)return; 然后就A了,dfs题,没有太多好说的,代码写的效 ...
- POJ 1699 Best Sequence (DFS+预处理)
意甲冠军:看图片是晶莹剔透的,正确的, N连接到第一序列(同样的序列部分).总序列获得最短. 主题链接:http://poj.org/problem?id=1699 ~~~~ 思路就是:将N个序列首尾 ...
- POJ 1699 Best Sequence(DFS)
題目鏈接 題意 : 將幾個片段如圖所示方法縮成一個序列,求出最短這個序列. 思路 : 其實我也不知道怎麼做.....看網上都用了DP.....但是我不會.....這個DP不錯,還有用KMP+状压DP做 ...
- poj 1699 Best Sequence (搜索技巧 剪枝 dfs)
题目链接 题意:给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因. 分析:先计算出add数组,再dfs枚举. 空间复杂度O(n*n), 最坏时间复杂度 ...
- [poj P1141] Brackets Sequence
[poj P1141] Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Special Judge Description ...
- Poj 1019 Number Sequence( 数据分析和操作)
一.题目大意 有这样一个序列包含S1,S2,S3...SK,每一个Si包括整数1到 i.求在这个序列中给定的整数n为下标的数. 例如,前80位为1121231234123451234561234567 ...
- POJ 2478 Farey Sequence
名字是法雷数列其实是欧拉phi函数 Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- POJ 2478 Farey Sequence(欧拉函数前n项和)
A - Farey Sequence Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
随机推荐
- ACdream 1017 Fast Transportation
http://acdream.info/problem?pid=1017 题意:给n个点,m条边,K个货物,要从从S到T,每天每条边最多只能经过1次,求要几天能运完 思路:拆成分层图,每层向下一层连边 ...
- 转:代码的坏味道之二十 :Data Class(纯稚的数据类)或POJO
所谓Data Class是指:它们拥有一些值域(fields),以及用于访问(读写]这些值域的函数,除此之外一无长物.这样的classes只是一种「不会说话的数据容器」,它们几乎一定被其他classe ...
- log4j日志分模块打印,同时不打印到控制台上
由于定时刷新程序的启用,导致catalina.out配置文件中打入大量日志,致使程序调试困难. 无法正常查看日志.所以客户要求将性能流量配置日志迁移出catalina.out目录.修 ...
- 如何使用WCF调试器WcfTestClient.exe
如果启用服务出现如下异常 请启用下面该服务 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE 文件->添加服务 地 ...
- UVa 1449 - Dominating Patterns (AC自动机)
题目大意:给出多个字符串模板,并给出一个文本串,求在文本串中出现最多的模板,输出最多的次数并输出该模板(若有多个满足,则按输入顺序输出). 思路:赤裸裸的 AC自动机,上模板. 代码: #includ ...
- MySQL 索引优化全攻略
所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找.而用的最多,并且是mysql默认的就是二叉树算法 BTREE, ...
- 绩效等级系统与MBO
1. 目标管理(MBO)在一定时期内(一般为一年)组织活动的期望成果,是组织使命在一定时期内的具体化,是衡量组织活动有效性的标准.由于组织活动个体活动的有机叠加,因此只有各个员工.各个部门的工作对组织 ...
- Unity Navigation自动寻路
NavMesh(导航网格) 是3D游戏世界中主动寻路的一种技术,如果你想让游戏人物能自动绕开障碍物到达目的地.那你就来学习下 Navigation导航技术吧O(∩_∩)O~ 首先创建一个项目创建Pan ...
- python高级编程之描述符与属性02
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #元描述符 #特点是:使用宿主类的一个或者多个方法来执行一个任务,可 ...
- Subversion安装
一.Subversion介绍 Subversion是一个集中式的信息共享系统.版本库是Subversion的核心部分,是数据的中央仓库.版本库以典型的文件和目录结构形式文件系统树来保存信息.任意数量的 ...