• map


    输入格式
    第一行,两个数 N,Q。表示有 N 个字符串和 Q 个询问。接下
    来 N 行,每行一个字符串。每个字符串只包括数字和字母,区分大
    小写。
    再接下来 Q 行,每行一个字符串,表示此字符串是否出现在之
    前的字符串中(需整个存在,即两字符串完全匹配),存在输出
    “ Yes” ,不存在输出“ No”
    输出格式
    Q 行,每行一个 Yes 或 No
    数据范围
    60%:1<=N<=3,000;1<=Q<=5,000
    100%:1<=N<=50,000;1<=Q<=5,000,000;1<=length_i<=30

    这道题目有多重做法,可以用hash,今天介绍map的做法。

    Map是STL[1] 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。——百度

    用map就可以存储字符串,并映射关系。

    map.begin()——返回map中第一个元素的迭代器
    map.end()——返回map中最后一个元素的迭代器
    map.size()——返回map中元素的个数
    map.count(element)——若map中有元素element,返回1,否则返回0
    map.clear——清空map
    map.lower_bound()——返回值大于给定元素的第一个位置

    此题用map,就可以存储每一个字符串
    code:

    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<string>
    using namespace std;
    int i,j,k,n,m,tot,ans,q;
    map<string,int> ma;
    int main()
    {
        cin>>n>>q;
        for(int i=1;i<=n;i++){
            string s;
            cin>>s;ma[s]=1;
        }
        for(int i=1;i<=q;i++){
            string s;
            cin>>s;
            if(ma.count(s))/*这里也可以写为 if(ma[s])*/ printf("Yes
    ");
            else printf("N0
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    Linux基础ls命令
    Linux基础tree命令
    Java银行调度系统
    Java交通灯系统
    Java反射
    Java基础IO流
    Java多线程
    Java集合框架
    Springmvc的一些属性功能
    JS
  • 原文地址:https://www.cnblogs.com/stevensonson/p/7612201.html
Copyright © 2020-2023  润新知