题面

题意:给你n个串,每个串都可以选择它的一个长度为n的环形子串(比如abcdf的就有abcdf,bcdfa,cdfab,dfabc,fabcd),求这个n个串的这些子串的最长公共子序列(每个串按顺序提出来字符,而这些字符并不一定要相邻)是什么(输出字典序最小的那个),没有就输出0

题解:看起来很难做,但实际上是10个串,每个串长度为8,也就是对于每个串也只有8个环形n子串,于是我们直接暴力枚举第一串的8种,与第二个串的8个依次求LCS

 #include<bits/stdc++.h>
using namespace std;
char a[][],pat[],ans_string[];
int len[],ans,n;
void solve(int length)
{
int start,limit,pat_len;
int ok=,flag=;
for (int i=;i<n;i++)
{
pat_len=;
flag=;
for (int j=;j<len[i];j++)
if (a[i][j]==pat[])
{
start=j+;
limit=j+len[i];
pat_len=;
while (start<limit && pat_len<length)
{
if (a[i][start]==pat[pat_len]) pat_len++;
start++;
}
if (pat_len==length)
{
flag=;
break;
}
}
if (!flag)
{
ok=;
break;
}
}
if (ok)
{
if (length > ans || ((ans==length) && (strcmp(pat,ans_string)<) ))
{
ans=length;
for (int i=;i<ans;i++) ans_string[i] = pat[i];
ans_string[ans] = '\0';
}
}
}
void dfs(int k,int last,int limit)
{
solve(k);
for (int i=last+;i<limit;i++)
{
pat[k]=a[][i];
pat[k+]='\0';
dfs(k+,i,limit);
}
return;
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
ans=;
for (int i=;i<n;i++)
{
scanf("%s",a[i]);
len[i]=strlen(a[i]);
}
for (int j=;j<n;j++)
{
for (int i=;i<len[j];i++) a[j][i+len[j]]=a[j][i];
a[j][len[j]*]='\0';
}
for (int i=;i<len[];i++)
{
pat[]=a[][i];
pat[]='\0';
dfs(,i,i+len[]);
}
if (ans>) printf("%s\n", ans_string); else printf("0\n");
}
}

hihoCoder-1829 2018亚洲区预选赛北京赛站网络赛 B.Tomb Raider 暴力 字符串的更多相关文章

  1. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】

    任意门:http://hihocoder.com/problemset/problem/1829 Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 L ...

  2. hihoCoder #1831 : 80 Days-RMQ (ACM/ICPC 2018亚洲区预选赛北京赛站网络赛)

    水道题目,比赛时线段树写挫了,忘了RMQ这个东西了(捞) #1831 : 80 Days 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 80 Days is an int ...

  3. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A、Saving Tang Monk II 【状态搜索】

    任意门:http://hihocoder.com/problemset/problem/1828 Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制:25 ...

  4. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛D-80 Days--------树状数组

    题意就是说1-N个城市为一个环,最开始你手里有C块钱,问从1->N这些城市中,选择任意一个,然后按照顺序绕环一圈,进入每个城市会有a[i]元钱,出来每个城市会有b[i]个城市,问是否能保证经过每 ...

  5. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛-B:Tomb Raider(二进制枚举)

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Lara Croft, the fiercely independent daughter of a missing adv ...

  6. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(尺取)题解

    题意:n个城市,初始能量c,进入i城市获得a[i]能量,可能负数,去i+1个城市失去b[i]能量,问你能不能完整走一圈. 思路:也就是走的路上能量不能小于0,尺取维护l,r指针,l代表出发点,r代表当 ...

  7. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛

    题意:到一个城市得钱,离开要花钱.开始时有现金.城市是环形的,问从哪个开始,能在途中任意时刻金钱>=0; 一个开始指针i,一个结尾指针j.指示一个区间.如果符合条件++j,并将收益加入sum中( ...

  8. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II(优先队列广搜)

    #include<bits/stdc++.h> using namespace std; ; ; char G[maxN][maxN]; ]; int n, m, sx, sy, ex, ...

  9. hihoCoder-1828 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II BFS

    题面 题意:N*M的网格图里,有起点S,终点T,然后有'.'表示一般房间,'#'表示毒气房间,进入毒气房间要消耗一个氧气瓶,而且要多停留一分钟,'B'表示放氧气瓶的房间,每次进入可以获得一个氧气瓶,最 ...

随机推荐

  1. word中选择嵌入式时图片被遮住,只显示小部分的解决方法

    选中图片,点击如下 选择  行距选项 将行距改为单位行距即可.

  2. HEK_费用报表审核无审核权限,有些字段无法编辑的问题处理

    Q:HEK_费用报表审核无审核权限,有些字段无法编辑的问题处理 A:设置AP员工->给AP员工分配审批权限->绑定员工和ERP账号 1.将审核人设置为AP员工 2.分配给员工审批权限 3. ...

  3. electron 学习

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. Table is specified twice, both as a target for 'UPDATE' and as a separate source

    UPDATE Bins b SET b.ShopSn =’111201611111168706’ WHERE b.Id IN (SELECT b.Id FROM Bins b JOIN BinInve ...

  5. C++:C++在图片特定区域之外产生随机数

    参考原文:C++产生随机数 (整数) C++在图片特定区域之外产生随机数,避开正则表达式,可以分为两种情况. 第一种:在某个数之前生成随机数:第二种,生成随机数,加上某个数,然后截断:第三种,指定范围 ...

  6. Matlab数组创建

    只用C语言,不用Matlab这种魔咒还是要打破的.Matlab是科学计算的常用工具,既然以前没用过,现在开始学吧...... 1.   向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] ...

  7. c#同步锁Monitor.Enter(T)

    protected static object MObjLock = new object();//同步锁 public string GetData(int mId) { Monitor.Enter ...

  8. OpenWRT 常用软件安装

    root@Jack:/tmp/opkg-lists# opkg--help opkg:unrecognized option `--help' opkgmust have one sub-comman ...

  9. kerberos认证原理---讲的非常细致,易懂

    前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去.后来想想原因有以下两点:对于一个没有完全不了解Ker ...

  10. Join 语句

    select * from books as A join (select * from Orders) as B on A.BookId = B.BookId select A.BookId,Aut ...