题解 洛谷P6367 【[COCI2006-2007#6] PRASE】
还是留篇题解帮帮萌新们吧!
这道题考察的知识点是对STL_map的应用,那么我们先来看看STL_map是什么。
一、map介绍
map,本质上时功能受限的平衡树,萌新们可以理解为下标可以不是int类型的数组。它是STL中的一个容器,提供一对一的数据处理与存储。
Q:怎样定义map?
A:map<关键字类型,关键字的值类型>map名称;
当然如果你要开三维的,可以使用pair或者map嵌套,但是不建议使用,因为STL本来就够慢的了,三维比拖拉机还拖拉机。
Q:map操作?
A:map的操作十分简单,调用和数组方式一样,更新也一样。如果你想遍历一个map,谔谔,我觉得不会有人尝试去遍历一个map。
二、此题思路
我已经说了,这道题目,我们可以用我上面介绍的STL_map来解决。关键字类型为string,关键字的值类型为int,即map<string,int>Map;
看不懂的请看代码中的注释。
三、AC代码
#include<bits/stdc++.h>//大力推荐万能头 using namespace std;//名字空间 int Total;//输进来的操作数 string Name[101];//输进来的字符串数组 map<string,int>Map;//定义map int main() { register int i;//大力推荐register register int Ans=0;//开始答案为0 cin>>Total;//输入 for(i=1;i<=Total;i++)//循环输入 { cin>>Name[i];//输入 if(Map[Name[i]]++>i-Map[Name[i]])//如果满足要求,则更新答案 { Ans++;//更新答案 } } cout<<Ans<<endl;//输出 return 0;//完美结束 }
不要妄图追上西坠的太阳,而是要在黎明前就等着它!