P1102 A-B 数对
通过map记录每个A出现的次数,数组a记录每个A减去C,即B,然后通过循环找出B出现的次数并累加。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,c,num=0;
cin>>n>>c;
long long a[200005];
map<long long,long long> b;
for(long long i=0;i<n;i++){
cin>>a[i];
b[a[i]]++;
a[i]-=c;
}
for(long long i=0;i<n;i++){
if(a[i]<0) continue;
num+=b[a[i]];
}
cout<<num;
return 0;
}
map
用于存储键-值对。map
中的每个元素都是一个键值对,其中键是唯一的,它们以升序的方式被排列。
主要作用和特点包括:
快速查找: 由于 map
内部的数据结构是有序的,可以利用二分查找的特性快速定位键,因此查找操作的时间复杂度为 O(log n)。
唯一键: map
中的键是唯一的,这意味着每个键只能对应一个值。如果插入了已存在的键,会更新对应的值。
自动排序: map
中的元素默认按键的升序顺序排列。这是因为 map
内部使用平衡二叉搜索树来维护元素,确保插入新元素和搜索已有元素的高效性。
动态增长: map
可以根据需要动态增长,没有固定大小的限制。.
键值对应关系: map
提供了键值对应关系的存储,可以方便地根据键查找对应的值。