洛谷P1381单词背诵
单词背诵
题目描述
灵梦有 \(n\) 个单词想要背,但她想通过一篇文章中的一段来记住这些单词。
文章由 \(m\) 个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只算一个)。并且在背诵的单词量尽量多的情况下,还要使选出的文章段落尽量短,这样她就可以用尽量短的时间学习尽可能多的单词了。
输入格式
第 \(1\) 行一个数 \(n\),接下来 \(n\) 行每行是一个长度不超过 \(10\) 的字符串,表示一个要背的单词。
接着是一个数 \(m\),然后是 \(m\) 行长度不超过 \(10\) 的字符串,每个表示文章中的一个单词。
输出格式
输出文件共 \(2\) 行。第 \(1\) 行为文章中最多包含的要背的单词数,第 \(2\) 行表示在文章中包含最多要背单词的最短的连续段的长度。
样例 #1
样例输入 #1
3
hot
dog
milk
5
hot
dog
dog
milk
hot
样例输出 #1
3
3
提示
数据规模与约定
- 对于 \(30\%\) 的数据,\(n \le 50\),\(m \le 500\);
- 对于 \(60\%\) 的数据,\(n \le 300\),\(m \le 5000\);
- 对于 \(100\%\) 的数据,\(n \le 1000\),\(m \le 10^5\)。
代码:
#include<iostream>
#include<map>
using namespace std;
string s[100005], s1;
int n, m;
map<string, bool> word;
map<string, int> cnt;
int sum, len;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s1; word[s1] = 1;
}
//输入s数组
cin >> m;
for (int i = 1; i <= m; i++) cin >> s[i];
//使用双指针进行遍历
for (int i = 1, j = 1; j <= m; j++) {
if (word[s[j]]) cnt[s[j]]++;
if (cnt[s[j]] == 1) sum++, len = j - i + 1;
while (i <= j) {
if (cnt[s[i]] == 1) break;
if (cnt[s[i]] > 1) cnt[s[i]]--, i++;
if (!word[s[i]]) i++;
}
len = min(len, j - i + 1);
}
cout << sum << endl << len << endl;
return 0;
}
洛谷P1381单词背诵的更多相关文章
- 洛谷 P1381 单词背诵
洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...
- 洛谷 P1381 单词背诵 解题报告
P1381 单词背诵 题目描述 灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...
- 洛谷 - P1381 - 单词背诵 - 哈希 - 尺取
https://www.luogu.org/problemnew/show/P1381 字符串匹配,用哈希总没有错的. 然后就是尺取了,题目要求首先尽可能多覆盖,那么每次尾巴往后面长. 一开始先找到第 ...
- 洛谷 P1101 单词方阵
题目链接 https://www.luogu.org/problemnew/show/P1101 题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中 ...
- 洛谷P1808 单词分类_NOI导刊2011提高(01) 字符串排序
洛谷P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且 ...
- 洛谷 P1019 单词接龙 (DFS)
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...
- 洛谷——P1101 单词方阵
https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...
- 洛谷P1101 单词方阵——S.B.S.
题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...
- 洛谷P1808 单词分类
题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等. 例如“AABA ...
- 洛谷 P1019 单词接龙 Label:dfs
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
随机推荐
- Trump 黑马 or 搅局者? 讲座视频分享
沈逸-特朗普能走多远 https://www.bilibili.com/video/BV1r7411t7VS/?spm_id_from=333.788.videocard.2 国际关系 对 ...
- baselines算法库的安装——Ubuntu20.04系统使用anaconda环境配置
baselines算法库不做过多介绍,个人认为这是公开是所有reinforcement learning算法库中最权威的,虽然没有后期更新,也就是没有了学术界的state of the art , ...
- Linux驱动|rtc-hym8563移植笔记
本文基于瑞芯微rk3568平台,关于该平台快速入手操作,大家可以参考以下文章: <瑞芯微rk356x板子快速上手> 0.什么是rtc-hym8563? RTC:实时时钟的缩写是(Real_ ...
- Atcoder ABC364 D-F
Atcoder ABC364 D-F D - K-th Nearest 链接: D - K-th Nearest (atcoder.jp) 简要题意: 问题陈述 在一条数线上有 \(N+Q\) 个点 ...
- 用GDI+旋转多边形来绘制一个时钟摸拟小程序
效果图 在头文件类中声明变量 TCHAR m_dayStr[4]; // 日期 TCHAR m_weekStr[4]; // 星期 Gdiplus::Font* m_pFont; // 字体 Gdip ...
- Mac 右键菜单中出现多个 Edge 版本解决方法
cd "/Applications/Microsoft Edge.app/Contents/Frameworks/Microsoft Edge Framework.framework/Ver ...
- HttpContext.SignInAsync 失效(表面解决了问题,未深入到.net core 源码去找问题,记录一下,等有时间翻一下.net core 源码试试能不能找到根本原因)
今天在弄 identityServer4 项目的时候,发现好好的登录竟然没用了. 各种跟踪后发现是 HttpContext.SignInAsync 这个方法不写cookies了 原本经过这个方法后,会 ...
- 游戏AI行为决策——Behavior Tree(行为树)
游戏AI行为决策--行为树 前言 行为树,是目前游戏中应用较为广泛的一种行为决策模型.这离不开它成熟的可视化编辑工具,例如Unity商城中的「Behaviour Designer」,甚至是虚幻引擎也自 ...
- Angular 18+ 高级教程 – Dependency Injection 依赖注入
前言 本来是想先介绍 Angular Component 的,但 Component 里面会涉及到一些 Dependency Injection (简称 DI) 的概念,所以还是先介绍 DI 吧. 温 ...
- Google – Reviews
前言 继上一篇 Facebook – Reviews (Graph API) 后, 这篇继续介绍另一个 Reviews 大平台 Google Reviews. 想通过 API 获取 Google Re ...