2023-01-14
题目传送门
翻译
难度&重要性(1~10):5
题目来源
AtCoder
题目算法
数学,模拟
解题思路
把(A-B)看为一步。应为最后必须落在N-1,所以可以将其分为两个序列:
\((A+B),2\times(A+B),3\times(A+B),\cdots N-1-2\times(A+B),N-1\)
然后用前缀和和后缀和得到答案。
完成状态
已完成
Code
#include<bits/stdc++.h>
using namespace std;
long long n,ans,a[100001];
int main(){
cin>>n;
for(int i=0;i<n;++i) cin>>a[i];
for(int i=1;i<n;++i){
long long sum=0;
for(int j=1;j<=(n-1)/i;++j){
int tmp=(n-1)-j*i;
if(tmp<=i) break;
if(!(tmp%i)&&tmp/i<=j) break;
sum+=a[i*j]+a[tmp];
ans=max(ans,sum);
}
}
cout<<ans;
return 0;
}