题解 洛谷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;//完美结束
}
View Code
posted @ 2020-08-08 15:04  Bushuai_Tang  阅读(192)  评论(0编辑  收藏  举报