蓝桥杯练习系统(算法训练)ALGO-951 预备爷的悲剧

资源限制

内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  英语预备爷gzp是个逗(tu)比(hao),为了在即将到来的英语的quiz中不挂科,gzp废寝忘食复习英语附录单词表,俨然一场人间悲剧。不过上天有好生之德,上帝扔给了gzp一张纸,上面记载了将要考到的单词。不过gzp是个逗比,之前复习的东西全忘记了,所以他又要再来一次复习。不过已经知道了要考的单词,所以不需要复习单词表的所有页数。因此,现在需要你帮助他求出有多少页纸需要复习。他会告诉你每个单词会在哪几页出现,并且告诉你要考哪些单词,你只要告诉他答案就可以了。由于一个单词会出现在不同页上,只需要复习在最前面一页上的就可以了。

输入格式

  第一行一个整数n,表示单词附录有n个单词。接下来n行每行一个小写字母组成的单词和一个整数,表示某一个单词和它所在的页数。接下来是一行整数m,表示要考m个单词,接下来m行小写字母组成的单词,表示要考到的单词。

输出格式

  一个数,表示需要复习的页数。

样例输入

5

ab 1

ac 2

ab 2

ac 3

c 3

3

ab

ac

c

样例输出

3

数据规模和约定

  0<=n,m<=100000,单词长度<=10。

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
const int N=100005;
map<string,int> word_map;
int num[N];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		string word;
		int a;
		cin>>word>>a;
		//只需要出现在最前面的页数
		if(word_map.count(word)==0) word_map[word]=a;//第一次出现
		else{//已经出现过了 
			if(word_map[word]>a) word_map[word]=a; 
		} 
	}
	int m;
	cin>>m;
	for(int i=0;i<m;i++){
		string word;
		cin>>word;
		num[i]=word_map[word];
	}
	//去重 
	sort(num,num+m);
	int ans=unique(num,num+m)-num;
	cout<<ans<<endl;
	return 0;
} 

思路:使用map存储单词和单词出现的最前面的页数,将要考的m个单词的页数存下来。当然,里面可能会有重复的页数,因此需要去重。也可以使用set来去重:

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
using namespace std;
//const int N=100005;
map<string,int> word_map;
set<int> pages;
//int num[N];
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		string word;
		int a;
		cin>>word>>a;
		//只需要出现在最前面的页数
		if(word_map.count(word)==0) word_map[word]=a;//第一次出现
		else{//已经出现过了 
			if(word_map[word]>a) word_map[word]=a; 
		} 
	}
	int m;
	cin>>m;
	for(int i=0;i<m;i++){
		string word;
		cin>>word;
//		num[i]=word_map[word];
		pages.insert(word_map[word]);
	}
//	//去重 
//	sort(num,num+m);
//	int ans=unique(num,num+m)-num;
//	cout<<ans<<endl;
	cout<<pages.size()<<endl;
	return 0;
} 
相关推荐
octopus_c1 小时前
数据结构:堆(Heap)详解
c语言·数据结构·算法
YH55269847 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
遥感知识服务9 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶9 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆9 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
叩码以求索11 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
官乐12 小时前
AI面试指南(多agent开发流程)
人工智能·面试·职场和发展
北风toto12 小时前
中缀、前缀、后缀表达式
算法·软件设计师
程序员三藏12 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
听取WA声一片(无恶意)12 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先