题解 CF1320A 【Journey Planning】

xht

2020-03-03 15:10:53

Solution

两个数可以同时选当且仅当**下标差等于值的差**,也就是**值减下标**要相等。 那么把值减下标相同的值加起来即可,由于值减下标可能为负,为了方便,使用 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; } ```