题目链接

题意:给n个字符串,输出他们的字典序最小的最长上升子序列(子序列定义为长度不超过8的,每个串自身和自身拼接后的子序列)。

思路:最多10个样例,字符串最多10个,每个串长度最多为8,指数级别都可以接受。。就暴力递归找出其中一个串的所有可能的子序列,答案一定是其中一个,排序后(长度为第一优先级,字典序为第二优先级)依次与其他串匹配,看能否和其他所有串匹配成功,若可以,就返回这个串。若所有子序列匹配不成功,输出0。

注意:和其他所有串匹配的时候,因为子序列可以循环拼接,要把这个串所有长度为n的子序列都匹配一遍,只要有一个能匹配就可以。

AC代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
string s[15];
int f[20][20],n;
void Getsubstrextend( string& src, int pos, string substr, vector<string>& vec)
{if( pos == src.size() ){if(substr!="")vec.push_back(substr);return;}string subnewstr=substr+src[pos];Getsubstrextend(src, pos+1, substr, vec);Getsubstrextend(src, pos+1, subnewstr, vec);
}
void get_tem(string& scr, vector<string>& vec)  //找出所有的子序列
{int n=scr.size();for(int i=0;i<n/2;i++){string ss(scr,i,n/2);Getsubstrextend(ss, 0, "",vec);}
}
bool cmp(string a,string b)
{int la=a.size(),lb=b.size();if(la==lb)return a<b;return la>lb;
}
string get_ans(vector<string>& vec)
{for(int k=0;k<vec.size();k++){string a=vec[k];int flag=1;    //标记能否与其他所有串匹配for(int kk=2;kk<=n;kk++){int flag2=0;   //标记能否和当前串匹配string x=s[kk];int len=x.size();for(int kkk=0;kkk<len/2;kkk++){string b(x,kkk,len/2);memset(f,0,sizeof f);int la=a.size(),lb=b.size();for(int i=1;i<=la;i++)for(int j=1;j<=lb;j++){f[i][j]=max(f[i-1][j],f[i][j-1]);if(a[i-1]==b[j-1])f[i][j]=max(f[i][j],f[i-1][j-1]+1);}if(f[la][lb]==la)   //只要有一个子序列能匹配,就跳出{flag2=1;break;}}if(!flag2)   //只要有一个不满足,说明该子序列不是答案{flag=0;break;}}if(flag==1)  //和其他n-1个串都能匹配return a;}return "0";   //所有都不满足,返回0
}
int main()
{cin.tie(0);ios::sync_with_stdio(false);while(cin>>n){for(int i=1;i<=n;i++){cin>>s[i];s[i]+=s[i];}vector<string> vec;get_tem(s[1],vec);sort(vec.begin(),vec.end(),cmp);cout<<get_ans(vec)<<endl;}return 0;
}

HihoCoder - 1829 Tomb Raider (暴力+最长上升子序列)相关推荐

  1. HihoCoder - 1829 Tomb Raider(暴力)

    题目链接:点击查看 题目大意:给出n个环形字符串,求n个字符串的最大公共子序列,如果有多个长度相同的答案,输出字典序最小的 题目分析:这个题数据给的很小,n只有10,字符串的长度只有8,所以可以直接暴 ...

  2. hihoCoder-1829 2018亚洲区预选赛北京赛站网络赛 B.Tomb Raider 暴力 字符串

    题面 题意:给你n个串,每个串都可以选择它的一个长度为n的环形子串(比如abcdf的就有abcdf,bcdfa,cdfab,dfabc,fabcd),求这个n个串的这些子串的最长公共子序列(每个串按顺 ...

  3. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 Tomb Raider(map+二进制枚举)

    #1829 : Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Lara Croft, the fiercely independent daugh ...

  4. leetcode-300 最长上升子序列

    题目描述: 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度 ...

  5. 【动态规划】最长公共子序列与最长公共子串

    1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...

  6. 触类旁通,经典面试题最长公共子序列应该这么答

    作者 |  labuladong 来源 | labuladong(ID:labuladong) [导读]最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经 ...

  7. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)

    目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...

  8. LCS最长公共子序列和LIS最长上升子序列——例题剖析

    一.LCS最长公共子序列 最长公共子序列(LCS)问题算法详解+例题(转换成LIS,优化为O(nlogn),看不懂你来打我) longest comment subsequence 模板题 longe ...

  9. BZOJ 3173: [Tjoi2013]最长上升子序列

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1524  Solved: 797 [Submit][ ...

  10. lis最长上升子序列o(nlogn)优化

    LIS的暴力算法 我们知道,LIS(最长上升子序列,最长下降子序列,最长不上升子序列,最长不下降子序列)如果按照最初得方法做,我们设置的状态f[i]表示i结尾的最长LIS的长度,在枚举每一个数的时候都 ...

最新文章

  1. 隔年增长的题_行测资料分析:一起聊聊隔年增长
  2. python 开始学习
  3. 为什么 Vista 使用过程中C盘用掉的空间迅速增大?
  4. 第七:不要表现得消极,仅仅因为你所做的事情不是你的兴趣所在
  5. 传英特尔将在6月下旬发布X299芯片组和Skylake-X处理器
  6. 线下课程推荐 | 知识图谱理论与实战:构建行业知识图谱 (第四期)
  7. pomelo中的next
  8. pythongui显示图片_opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像...
  9. Ubuntu下如何将普通用户提升到root权限
  10. 异步消息的传递-回调机制(转)
  11. 一些FORK函数的例子
  12. 【线性代数】矩阵分解(Matrix Factorization)笔记:非负矩阵分解(实践)
  13. 工业相机的50个知识点
  14. windows10 任务管理器被管理员禁用解决办法
  15. Ps制作的立体字效果
  16. 引流产品用哪些比较合适?什么样的产品适合做引流?
  17. C++开发斗地主(QT)第三篇之动画发牌与位置计算
  18. 01-oracle账号的注册
  19. python打印等腰三角形_Python 打印各种三角形
  20. MOS驱动自举电容和限流电阻的选取

热门文章

  1. 010项目沟通管理和干系人管理
  2. 新网站如何才能被百度快速收录?
  3. (一)RFB协议概述
  4. 使用python发邮箱遇到的问题
  5. SeleniumWebDriver驱动2345浏览器
  6. Linux 的7种文件类型及各颜色代表含义
  7. 【PC】解决访问小米路由器外接硬盘需要密码/无密码访问小米路由器共享盘
  8. pycharm远程调试的“bug”:/miniconda3/envs/learn/bin/python: can‘t open file ‘//<a2a1d7b1c-6145-4e45-...
  9. 计算机网络和internet选项,小编教你电脑ie的internet选项在哪
  10. 卅三先生的工程电磁场讲座.EEm05——边界条件001