|
|
@ -14,6 +14,7 @@ int st[N];
|
|
|
|
int n;
|
|
|
|
int n;
|
|
|
|
LL res;
|
|
|
|
LL res;
|
|
|
|
void dfs(int r, LL sum) { // u:本轮选择哪个靶子, r:剩余几次机会 sum:已经取得的累加和
|
|
|
|
void dfs(int r, LL sum) { // u:本轮选择哪个靶子, r:剩余几次机会 sum:已经取得的累加和
|
|
|
|
|
|
|
|
|
|
|
|
if (r == 0) {
|
|
|
|
if (r == 0) {
|
|
|
|
res = max(res, sum);
|
|
|
|
res = max(res, sum);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -48,8 +49,8 @@ int main() {
|
|
|
|
|
|
|
|
|
|
|
|
// 预处理
|
|
|
|
// 预处理
|
|
|
|
for (int i = 1; i <= n; i++) {
|
|
|
|
for (int i = 1; i <= n; i++) {
|
|
|
|
a[i].left = a[i - 1].num;
|
|
|
|
a[i].left = i - 1;
|
|
|
|
a[i].right = a[i + 1].num;
|
|
|
|
a[i].right = i + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
dfs(n, 0);
|
|
|
|
dfs(n, 0);
|
|
|
|