ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝桥杯 ALGO-951 预备爷的悲剧

2021-11-01 10:58:26  阅读:217  来源: 互联网

标签:map string 951 页数 蓝桥 int ALGO 单词 include


  这题题目其实比较简单,大概意思就是给一些单词和页数给你,要你统计这些单词和它们的最小页数,典型的“key-value”结构,很容易可以想到用

map<string,int>

  但问题在于这个map容器对string的对比不是很友好(目前尚不知道什么原理,希望评论区的大佬能指点指点),对于相同的string仍会插入。所以只能借助结构或类,自己重载运算符的方式进行比较了,这里我选择用结构。

struct English{
	string str;
	bool operator<(const English str1)const
	{
		return this->str<str1.str;
	}
};

这样我们就可以用map容器很方便的将所有给出单词及它们的最小页数统计起来,然后再根据要复习的单词将页数统计起来,由于页数有重复这里选择用一个set容器来统计(set容器里不会有重复数据),最后直接统计set容器的长度就是我们要得到的复习的页数。这道题到这里基本就完成了(最麻烦的其实还是处理输入(-_-))。上代码

#include<iostream>
#include<cstring>
#include<map>
#include<set>
using namespace std;

struct English{
	string str;
	bool operator<(const English& str1)const
	{
		return this->str<str1.str;
	}
};

int main()
{
	set<int> pages;
	map<English,int> word;
	int n;                       //给出单词数量 
	cin>>n;
	for (int i=0;i<n;i++)
	{
		getchar();
		English W;
		getline(cin,W.str,' ');
		int n;
		cin>>n;
		if(word.count(W)&&n<word[W])
		    word[W]=n;
		else
		    word.insert(pair<English,int>(W,n));
	}
	int m;                       //要背单词数量 
	cin>>m;
	getchar();
	for (int i=0;i<m;i++)
	{
		English W;
		getline(cin,W.str,'\n');
		if(word.count(W)==1)
			pages.insert(word[W]);
	}
	cout<<pages.size();
	return 0;
}

标签:map,string,951,页数,蓝桥,int,ALGO,单词,include
来源: https://blog.csdn.net/chy1599739974/article/details/121075636

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有