problem

博客是一个能非常方便记录自己学习历程的工具,而当你的博客内容非常多的时候,仅仅使用标签和分类已经不足以让你快速定位到要找的博文。
这时,就需要一个搜索引擎来让你更快定位到目标博文。

搜索引擎的基本原理就是计算每一个文章与搜索词的相似程度,按照相似程度从大到小显示出来。
经过复杂的代码计算,我们终于解决了字符编码、抛弃冗杂信息的工作,生成了一个每篇文章的摘要信息。现在给你一些关键词,你能找到最符合要求的文章么?
对于文章的匹配程度定义如下:
如果我们将搜索词去除几个单词,剩余的单词按顺序组成一个搜索序列,并且这个序列在摘要中出现了(可以不连续),那么我们就称这个搜索序列与该文章是匹配的。
我们自然希望与该文章匹配搜索序列越长越好,所以搜索词与文章的匹配程度就是上述搜索序列的最长长度

Input

第一行为数据组数T(1<=T<=10)
接下来一行为关键词个数n(1<=n<=100)
紧接着一行是n个英语单词
下面一行是文章个数m(1<=m<=100)
接下来m行每行以一个整数length开头,表示这篇文章的摘要单词数(1<=length<=100)
数据保证对于所有关键单词和摘要单词不超过10个字符,并且只包括小写英语字母

Output

输出最符合要求的文章序号(从1开始计数)
如果最符合要求的文章不唯一,输出序号最小的

Input

1
3
dp search better
3
4 dp is very useful
9 use dp and you can search it in there
6 do better in search with dp

Output

2

Limitation

1s 256MB

Hint

搜索词为dp、search、better
而文章摘要为dp is very useful、use dp and you can search it in there、do better in search with dp
对于第一篇文章摘要:最长的在文章摘要中出现的搜索词序列是dp,所以匹配程度是1
对于第二篇文章摘要:最长的在文章摘要中出现的搜索词序列是dp search,所以匹配程度是2
对于第三篇文章摘要:最长的在文章摘要中出现的搜索词序列是search或者better或者dp,所以匹配程度是1

传送门传送门传送门传送门

思路

裸的LCS,本菜比赛时没有看出来,乱搞没搞出来

关于LCS:点击打开链接

代码示例

#include<bits/stdc++.h>
using namespace std;const int maxn=110;int n;//摘要词数struct w{int num;//单词数int ans;//匹配数vector<string> G;//这个文章的单词
}wen[maxn];//每一篇文章vector<string> xiang;//待搜索int dp[maxn][maxn];//dp[len][len]表示两个序列的公共数量int solve(int loc)
{int len1=n;int len2=wen[loc].num;int i,j;for(int i=0;i<=len1;++i) dp[i][0]=0;//无公共子序列for(int i=0;i<=len2;++i) dp[0][i]=0;for(int i=0;i<len1;++i)for(j=0;j<len2;++j){if(xiang[i]==wen[loc].G[j]) dp[i+1][j+1]=dp[i][j]+1;else{dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);}}return dp[len1][len2];
}int main()
{ios::sync_with_stdio(false);int t,m;//n为待搜索cin>>t;while(t--){//注意初始化memset(dp,0,sizeof(dp));xiang.clear();for(int i=0;i<=maxn;++i){wen[i].G.clear();}cin>>n;for(int i=0;i<n;++i){string tp;cin>>tp;xiang.push_back(tp);}cin>>m;string tp;int ans=0;int maxx=0;for(int i=0;i<m;++i){cin>>wen[i].num;for(int j=0;j<wen[i].num;++j){cin>>tp;wen[i].G.push_back(tp);}if(solve(i)>maxx){ans=i;maxx=solve(i);}}cout<<ans+1<<endl;}return 0;
}

17AHU排位赛3 C题 (LCS)相关推荐

  1. 17AHU排位赛3 D题 旋转吧!雪月花 ! (DFS序,线段树维护树上最值)

    problem 在一个平面上有n个齿轮,每个齿轮都有自己的初始半径 ri r_i .有n-1对齿轮是互相嵌在一起的,即它们拥有相同的线速度.如果将n个齿轮当作n个点,将n-1条相嵌关系当作n-1条边, ...

  2. 【万人千题】结对编程排位赛(第一期) 第二周 排名公布,冠军成功卫冕,啊这……

      博主会带领大家进行 <C语言入门100例> 和 <算法零基础100讲>的训练,每天把一些知识点巩固后做完相应练习题,和群友一起打卡,如果身边有志同道合之人,也可一起加入,今 ...

  3. 【常见笔试面试算法题12续集四】动态规划算法案例分析4 LCS练习题练习题(最长公共子序列的长度)

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 给定两个字符串A和B,返回两个字符串的最长公共子序列的长度.例如,A ...

  4. [Leetcode][第1143题][JAVA][最长公共子序列][LCS][动态规划]

    [问题描述][中等] [解答思路] 时间复杂度:O(N^2) 空间复杂度:O(N^2) class Solution {public int longestCommonSubsequence(Stri ...

  5. 判断条件UVa 10192 - Vacation(LCS水题)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 题目:http://uva.onlinejudge.org/index.ph ...

  6. UVa 10066 - The Twin Towers(LCS水题)

    题目:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...

  7. SPOJ 1811 LCS,SPOJ 1812 LCS2【SAM裸题,clj的ppt很清楚

    反正clj的ppt都讲了 - LCS的话--因为只需要匹配一次,也就不需要更新pre的值了. - 然而LCS2--因为有多个字符串要匹配,于是要把整个SAM上的rec都更新了,所以多了一步从后往前更新 ...

  8. FJNU2019级第二场排位赛D题Nim题解

    蒟蒻第二篇题解 题目描述Alice和Bob两个熊孩子又开始玩游戏了,这次他们和往常一样玩一个叫Nim的游戏,但是他们都知道如何在这个游戏中以最优策略赢对方,因此他们将Nim游戏规则稍微修改了下,首先他 ...

  9. 51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子

    给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最 ...

  10. 【qduoj - 夏季学期创新题】最长公共子串(水题暴力枚举,不是LCS啊)

    题干: 描述 编写一个程序,求两个字符串的最长公共子串.输出两个字符串的长度,输出他们的最长公共子串及子串长度.如果有多个最长公共子串请输出在第一个字符串中先出现的那一个. 特别注意公共子串中可能包含 ...

最新文章

  1. 计算机音乐是哪一个,哪种软件适合音乐编辑的计算机版本?
  2. 全民IT时代到来了?学计算机很有前途?——淘宝2011校园招聘笔试感想
  3. VC6中编译参数设置
  4. java读取属性文件的方法_java读取属性文件的方法
  5. 数组对象根据某个属性取出重复的个数
  6. macOS彻底卸载/删除Microsoft相关的程序
  7. 爬虫用mysql存储还是mongodb_【面试题】Mongodb和MySQL存储爬虫数据的特点是什么?...
  8. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法
  9. python 排列组合算法_排 列 组 合 公 式 及 排 列 组 合 算 法
  10. Cordova Android 禁用长按选中功能
  11. win7 iis php5.3,win7 下安装 iis7.5+php5.3的配置方法(图文)
  12. Altium Designer 在pcb下导入的原件引脚是绿的
  13. 向贵人讨教,实现共赢
  14. mysql非整型分区_mysql分区
  15. excel vsto 功能菜单定义
  16. BP神经网络代码和原理
  17. html代码seo,SEO必学基础html代码基础
  18. 手机裁剪音频的软件有哪些?来看看这几个吧
  19. 杰瑞学Perl之PPM
  20. Flutter 最佳扫码插件

热门文章

  1. 阿里云在线温湿度-小熊派qpython(综合展示)
  2. Android 小红点 未读消息功能 BadgeHelper
  3. win10专业版关闭Windows Defender Antivirus
  4. Vue+Less换肤方案
  5. (附源码)springboot儿童教育管理系统 毕业设计281442
  6. linux 安装ros软路由,Centos7安装RouterOS软路由
  7. flex java blazeds 注解_flex java blazeds 注解
  8. win7 x64部署和串口调试虚拟驱动toaster
  9. 《统计学习方法》第七章
  10. Linux 脚本修改ps1,Ubuntu修改命令提示符PS1教程(非常详细)