1. 题目来源
链接:3771. 选取石子
2. 题目解析
模拟题。
简单对公式做变换 x-ax=y-ay=z-az=...
所以当值减去下标后为相同的数会被分成同组,哈希表记录即可。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
unordered_map<int, LL> h;
int main() {
cin >> n;
for (int i = 1; i <= n; i ++ ) {
int x;
cin >> x;
h[x - i] += x;
}
LL res = 0;
for (auto &[k, v] : h) res = max(res, v);
cout << res << endl;
return 0;
}