题解 CF1320A 【Journey Planning】
xht
2020-03-03 15:10:53
两个数可以同时选当且仅当**下标差等于值的差**,也就是**值减下标**要相等。
那么把值减下标相同的值加起来即可,由于值减下标可能为负,为了方便,使用 map 即可。
```cpp
const int N = 2e5 + 7;
int n;
ll a[N], ans;
int main() {
rd(n), rda(a, n);
map<ll, ll> f;
for (int i = 1; i <= n; i++) f[a[i]-i] += a[i];
for (auto o : f) ans = max(ans, o.se);
print(ans);
return 0;
}
```