chenfy27的刷题记录

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

abc369D Bonus EXP

有N只怪兽,第i只怪兽的体力为A[i],需要按编号从小到大的顺序依次处理,对于每只怪兽可以选择打或不打,如果不打,经验值不变;如果打,将获得等同于怪兽体力的经验值。另外,对于第偶数次打的怪兽,经验值翻倍。求能获得的最大经验值。
1<=N<=2E5; 1<=A[i]<=1E9

分析:获得的经验跟奇偶性有关,设dp0[i]表示前i只怪兽打了偶数只的答案,dp1[i]表示前i只怪兽打了奇数只的答案。根据打或不打,以及奇偶性进行递推。

#include <bits/stdc++.h>
using i64 = long long;
void solve() {
int N;
std::cin >> N;
std::vector<int> A(N+1);
for (int i = 1; i <= N; i++) {
std::cin >> A[i];
}
std::vector<i64> dp0(N+1), dp1(N+1);
dp0[0] = 0;
dp1[0] = -1E18;
for (int i = 1; i <= N; i++) {
dp0[i] = std::max(dp0[i-1], dp1[i-1] + 2 * A[i]);
dp1[i] = std::max(dp1[i-1], dp0[i-1] + A[i]);
}
std::cout << std::max(dp0[N], dp1[N]) << "\n";
}
int main() {
std::cin.tie(0)->sync_with_stdio(0);
int t = 1;
while (t--) solve();
return 0;
}

posted on   chenfy27  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示