• STL中的map


    map 容器 提供 1 对 1 的关系

    定义方式:

    map<string,int>mp;

    写在前面的是关键字。

    数据插入:

    1.使用 insert 插入 pair 数据

    mp.insert(pair<string,int>("sb",1));

    2.用value_type进行插入

    mp.insert(map<string,int>::value_type("sb",1));

    3.直接插入

    mp["sb"] = 1;

    注意的是1,2两种插入方法,必须插入关键字不同的mp对,而方法三可以直接对关键字对应的信息覆盖。

    常用函数:

    mp.size();
    sort(mp.begin,mp.end); //用迭代器排序
    mp.clear(); //清空
    mp.empty(); // 是否为空

    查找函数:

    pair mappair = mp.equal_range("sb");
            if(mappair.first == mappair.second)
                cout << "no find" << endl;

    mappair.first 等同于lower_bound , second 等同于upper_bound。

    数据删除函数:

    int n = mp.erase("sb");  //删除成功返回 1 否则返回 0

    讲的再多不如例题理解的透彻——hdu6015

    题目大意是找出逃课值最大的方案

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long  ll;
    const int inf = 0x3f3f3f3f;
    const int moder = 1e9 + 7;
    const int MAXN=510;
    
    struct node
    {
        char s[15];
        int val;
    
    };
    
    bool cmp(const node &a, const node &b)
    {
        return a.val > b.val;
    }
    
    
    int main()
    {
        int t;
        cin >> t;
        map<string,int>mp;
        while(t--)
        {
            int n;
            cin >> n;
            mp.clear();     //此处每次都一定要清空
            node NODE[n];
            for(int i=0;i < n;i++)
                cin >> NODE[i].s >> NODE[i].val;
    
            sort(NODE,NODE+n,cmp);
    
            ll sum = 0;
            for(int i=0;i < n;i++)
            {
                if(mp[NODE[i].s] == 2) continue;
                else
                {
                    mp[NODE[i].s]++;    // 直接使用,不需要特殊的定义,map[关键字]对应的是逃课的次数
                    sum += NODE[i].val;
                }
            }
            cout << sum << endl;
        }
        return 0;
    }

    /*

  • 相关阅读:
    Gym
    UVALive
    UVALive
    UVALive
    UVALive
    Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset Trie
    HDU 5816 Hearthstone 概率dp
    欧几里德与扩展欧几里德算法(转)
    差分约束系统详解(转)
    2016年第七届蓝桥杯C/C++程序设计本科B组决赛
  • 原文地址:https://www.cnblogs.com/cunyusup/p/8440264.html
Copyright © 2020-2023  润新知