ABC128F
ABC128F
校内模拟赛做到这题,很快切了。
令
显然,它走的顺序是
我们可以枚举
如果
观察等差数列,发现多了的两项就是
判断重复:只要
代码
#include <iostream>
using namespace std;
#define MAXN 100005
using ll = long long;
int n;
ll val[MAXN];
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> val[i];
}
ll res = 0;
for (int d = 1; d < n; d++) // a - b
{
ll sr = 0;
ll cr = 0;
int k = -d;
for (int j = n - 1; j > d; j -= d) // a
{
if (j == k)
{
break;
}
k += d;
if (j == k)
{
break;
}
sr += val[j];
if (k > -1)
{
sr += val[k];
}
cr = max(cr, sr);
}
res = max(res, cr);
}
cout << res << endl;
return 0;
}