RT,题目在这里。
本蒟蒻最开始想到了显而易见的错误贪心 ,然后发现它可以被形如 a,b,a,b,a,……,b,a 的数据卡掉,然后我对这种数据进行特判,过掉了讨论区/题解/自己出的所有hack数据,但还是WA52分/kk
代码如下:
#include <bits/stdc++.h>
using namespace std;
bool flag = false;
int n,a[20020],ans = 0,last = 0,res = 0,sum = 0;
int main() {
cin >> n;
for(int i = 1; i <= n; ++i) {
cin >> a[i];
if(i == 1) last = a[i];
else if(i == 2) res = a[i];
else if(i % 2) {
if(a[i] != last) flag = true;
} else if(i % 2 == 0) {
if(a[i] != res) flag = true;
}
sum += a[i];
}
a[n + 1] = a[1];
for(int i = 1; i <= n; ++i) ans = max(ans,a[i] + a[i + 1]);
if(flag) cout << ans;
else {
if(a[1] > a[2]) cout << ans;
else {
int d = sum / (ans + a[1]);
int l = sum % (ans + a[1]);
while(true) {
if(l + d >= ans + a[1]) break;
l += d;
--a[1];
}
cout << ans + a[1];
}
}
return 0;
}
(hack数据最好不要形如 a,b,a,b,a,……,b,a ,因为我通过输出特判的布尔变量的方式话说我这不算套取数据吧…… 发现该题的数据并不是这样)