C++中map底层实现是红黑树(平衡二叉搜索树),而unordered_map是哈希表(哈希桶 + 链表 / 红黑树)

#include <iostream>
// #include <map> // 红黑树
#include <unordered_map> // 哈希表
using namespace std;

int main() {
    // map<unsigned long long, unsigned long long> fx; // fx[i] 默认值为 0
    unordered_map<unsigned long long, unsigned long long> fx; 
    unsigned long long n, ans=0;
    cin >> n;
    for (unsigned long long i=1; i<=n; i++) {
        unsigned long long x, y;
        cin >> x >> y;
        ans += i*fx[x];
        fx[x] = y;
    }
    cout << ans << endl;
}
// 64 位输出请用 printf("%lld")

之前“字符串哈希”的 PolynomialHash 通过重载 operator[] 可以实现类似 map 的 [] 用法,但是感觉实现这里的大整数哈希还是很复杂,不管了