• HDOJ_2094 寻找冠军 set的简单应用


    这个题原来没有思路,感觉较难,想着得建树,后来在讨论区看到神贴,用set水过,看了一下,才想到方法,其实这个不用set的巧妙之处是 运用了set 相同的元素只存储一个的特性,建立两个容器,好啦,大家一看代码便知思路,我暴怒废话啦

    #include<iostream>
    #include<set>
    #include<string>
    #include<algorithm> //这个不能少,用到比较时旧的添上
    using namespace std;
    int main()
    {
        int n;
        string str1,str2;
        set<string>a,b;
        while(scanf("%d",&n),n)
        {
            while(n--)
            {
                cin>>str1>>str2;
                a.insert(str1);
                b.insert(str2);
            }
            set<string>::iterator i;
            for(i=b.begin();i!=b.end();i++)
            {
                if(find(a.begin(),a.end(),*i)!=a.end())
                    a.erase(*find(a.begin(),a.end(),*i));
            }
            if(a.size()==1)
                cout<<"Yes"<<endl;
            else
                cout<<"No"<<endl;
            a.clear();
            b.clear();
        }
        return 0;
    }
            


    set的一下简单操作:

    begin() 返回指向第一个元素的迭代器

      clear() 清除所有元素

      count() 返回某个值元素的个数

      empty() 如果集合为空,返回true(真)

      end() 返回指向最后一个元素之后的迭代器,不是最后一个元素

          equal_range() 返回集合中与给定值相等的上下限的两个迭代器

      erase() 删除集合中的元素

      find() 返回一个指向被查找到元素的迭代器

      get_allocator() 返回集合的分配器

      insert() 在集合中插入元素

      lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器

      key_comp() 返回一个用于元素间值比较的函数

      max_size() 返回集合能容纳的元素的最大限值

      rbegin() 返回指向集合中最后一个元素的反向迭代器

      rend() 返回指向集合中第一个元素的反向迭代器

      size() 集合中元素的数目

        swap() 交换两个集合变量
         upper_bound() 返回大于某个值元素的迭代器

      value_comp() 返回一个用于比较元素间的值的函数

    StL用多了,大家也知道,其实常用的操作没几个,想本题里面的find就是常用之一,记住即可!

  • 相关阅读:
    戴文的Linux内核专题:08内核配置(5)
    如何在redhat下安装WineQQ
    如何在redhat下安装办公软件(openoffice)
    fqrouter让安卓手机登陆facebook成为可能
    戴文的Linux内核专题:08内核配置(4)
    如何登录Google美国服务器
    SSM框架搭建(转发)
    垃圾回收器
    数据生成时间表
    js控制邮箱跳转
  • 原文地址:https://www.cnblogs.com/zibuyu/p/2635863.html
Copyright © 2020-2023  润新知