首页 > 其他分享 >洛谷P1381单词背诵

洛谷P1381单词背诵

时间:2024-10-14 21:21:58浏览次数:8  
标签:le 洛谷 int 样例 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;
}

标签:le,洛谷,int,样例,P1381,单词,背诵,文章
From: https://www.cnblogs.com/xkgc/p/18466183

相关文章

  • 洛谷P1219八皇后问题
    [USACO1.5]八皇后CheckerChallenge题目链接题目描述一个如下的\(6\times6\)的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列\(2\4\6\1\3\5\)来描述,第\(i\)个数......
  • 洛谷P1373:小 a 和 uim 之大逃离
    洛谷P1373:小a和uim之大逃离题意略思路DP:记dp[i][j][c][0/1]表示走到\(i\)行\(j\)列时,两人容量之差为\(c\)的方案数,\(0\)表示\(\rm小a\)走的最后一步,\(1\)表示\(\rmuim\)走的最后一步。容易得出转移方程:dp[i][j][l][0]+=dp[i-1][j][l-a[i][j]+k][1];dp[......
  • python代码将文件夹里面pdf全部出现单词出现频次显示出来并且出现意思,保存到excle
    英语考试和代码结合(自动化人哭了)需要教程可以私信我,我可以出视频B站importcsvimportrefromcollectionsimportCounterfrompdfminer.pdfparserimportPDFParserfrompdfminer.pdfdocumentimportPDFDocumentfrompdfminer.pdfpageimportPDFPagefrompdfmine......
  • 洛谷题单指南-字符串-P5283 [十二省联考 2019] 异或粽子
    原题链接:https://www.luogu.com.cn/problem/P5283题意解读:n个整数,每次从从取l~r的数进行异或得到美味值,一共取k次,并计算这k个美味值之和的最大值。解题思路:1、如何O(1)的计算l~r数的异或,得到美味值可以借助前缀和思想,a[i]为第i个数,s[i]表示a[1]~a[i]每个数的异或值,要计算l~r的......
  • 洛谷学习总集2
    洛谷代码学习总集2目录索引P1067输出多项式的字符串P1098将切片展开成完整字符串P1067输出多项式的字符串思路:多项式由:系数,"x",""指数,组成。其中各项多项式间由"+"连接,如果系数/指数为1则不需要打印系数/""指数。特殊情况:读入1、末两项(指数为1和指数为0)针对......
  • 洛谷 P2071 座位安排题解
    因为一个人坐一个座位很像二分图,题意转化为二分图最大匹配。把人放在左部,把座位放在右部,一排座位占右部的两个点。假设人想要坐在\(x\)排,那么建图的时候就可以将这个人连向\(2x\)和\(2x+1\)。这样一排就对应着两个人了。由于\(n\le4000\),直接由朴素的\(O(nm)\)的匈牙利......
  • 01背包问题/Ieee全球极限编程大赛11.0题BeetleBag题解/洛谷P1926 小书童——刷题大军
    基础01背包问题概述给出一个容积为V的背包,有i个物体,每个物体都有自己的体积和价值,用Vi和Wi表示,要将这些物体装进背包里面,问怎样才能使得装入物体的总价值最大?最大为多少?解决思路1.如果你没能正确理解这道题,尤其是对于很多新手,第一反应可能是将所有物体的单位价值算出来,然后......
  • 头歌测试 单词分割
    任务描述本关任务:将一段英语字符串进行单词分割。相关知识为了完成本关任务,你需要掌握:如何将字符串进行分割。String.split()拆分字符串lang包String类的split()方法publicString[]split(Stringregex)publicString[]split(Stringregex,intlimit)//limit参数控制......
  • 蓝桥杯刷题第一题:单词分析
    题目描述小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。现在,请你帮助小蓝,给了一个单词后,帮助他找......
  • 洛谷P8818 [CSP-S 2022] 策略游戏
    Problem给出两个数组A,B,进行q次询问,每次分别给出这两个数组的某个区间l1,r1,l2,r2,也就是\(A_{l1\simr1}\)与\(B_{l2\simr2}\),有两位同学小L和小Q分别从A,B的以上区间中选一个数,而两数乘积为此次操作的分数,小L希望分数大,小Q希望分数小,请问他们每次以最优策略进行游戏,分数将会......