题解 | 大整数哈希
大整数哈希
https://www.nowcoder.com/practice/29f0cff8a69b4ab6a2f63fb7386defa3
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n;
cin >> n;
unordered_map<unsigned long long, unsigned long long> ss; // 记录 i 对应的 gg[x] 的值
unordered_map<unsigned long long, unsigned long long> gg; // 记录 x 对应的 y 值
for (unsigned long long i = 1; i < n + 1; i++) {
unsigned long long x, y;
cin >> x >> y;
// 如果 gg 中没有 x,先插入 0(或者直接用 gg[x])
if (gg.find(x) == gg.end()) {
gg[x] = 0; // 默认值
}
// 记录当前的 gg[x] 到 ss[i]
ss[i] = gg[x];
// 更新 gg[x] 为最新的 y
gg[x] = y;
}
unsigned long long ret = 0;
for (unsigned long long i = 1; i < n + 1; i++) {
ret += i*ss[i]; // 累加 ss[i]
}
cout << ret;
return 0;
}
所有数必须是unsigned long long
查看11道真题和解析