以下为个人粗略笔记,方便自己记忆。
目录
简单理解:
一种关联容器。Key--Value。举例:Bob--张三,Alice--李四。map["Bob"]="张三",map["Alice"]="李四".
头文件:
#include<map>
定义:
map<key数据类型,value数据类型> 变量名
例:
map<int,int>mp;
基本函数:
1.插入数据
估计算法题都是 map<int ,xx>mp,因此简单插入mp[i]=xxx;(xx任意类型,xxx任意内容)
2.查找关键字
2.1 find()
没找到返回mp.end() (end()函数,顾名思义指向map尾巴)
so mp.find(x)==mp.end() -> 没找到关键字为x的
2.2 count()
没找到返回0,找到返回1(毕竟关键字不能重复,只能有一个)
3.清空
clear()
简单:mp.clear()
来道题目练练手艺
https://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1011&cid=986
题目简介
代码:(放心,AC了)
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
typedef long long int ll;
map<ll, ll>mp;
ll n, k;
ll cntnode(ll n)
{
if (mp.find(n) != mp.end())
return mp[n];
if (n <= k)
{
mp[n] = 1;
return mp[n];
}
mp[n] = cntnode(n / 2) + cntnode(n - n / 2) + 1;
return mp[n];
}
int main()
{
int T;
cin >> T;
while (T--)
{
scanf("%lld%lld", &n, &k);
mp.clear();
printf("%lld\n",cntnode(n));
}
return 0;
}