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 ...
随机推荐
- javascript----bug
JSON.parse(null)------------某些手机浏览器不支持.
- bzoj 1912 巡逻(树直径)
Description Input 第一行包含两个整数 n, K(1 ≤ K ≤ 2).接下来 n – 1行,每行两个整数 a, b, 表示村庄a与b之间有一条道路(1 ≤ a, b ≤ n). Ou ...
- Driver Signing changes in Windows 10
Driver Signing changes in Windows 10 RATE THIS 1 Apr 2015 1:28 PM 39 Beginning with the release of ...
- InnoSetup中枚举出INI文件的所有sections和键值
原文 http://blog.chinaunix.net/uid-23480430-id-3016899.html InnoSetup支持一些INI文件操作函数, 例如GetIniString,Ini ...
- 独立写作(A or B)
开头:On contemporary society(一般的背景)/ With the advent of the technologically advanced society (the info ...
- python练习linux下创建路径
#coding=utf-8 import os class MakeDirectory(): def mkdir(self,path): # 去除首位空格 path=path.strip() # 去除 ...
- 本地plsqldev.exe连接远端oracle数据库
先看百度经验:http://jingyan.baidu.com/article/48b558e3540ecf7f38c09a3c.html 这里如果我们只有安装plsql工具,下载oracle精简版本 ...
- [转] Hive 内置函数
原文见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 1.内置运算符1.1关系运算符 运算符 类型 说明 A ...
- 使用ssh远程执行命令批量导出数据库到本地
前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,1 ...
- fcitx-rime添加五笔/五笔拼音
简介 Rime,全名:中州韵输入法引擎,它不仅仅是一个输入法,也是一个输入法算法框架.Rime 支持拼音.双拼.注音.五笔和仓颉等音码.形码输入法. 安装 Debian sid 用户可以使用下面命令安 ...