动态规划。
f[i][0/1]表示前i个且最后选A或B的方案的集合。
所以f[i][0]=max(f[i-1][0],f[i-2][1])+A[i]。f[i][1]同理。
1 typedef long long LL; 2 const int N = 1e5+10; 3 LL f[N][2]; 4 class Solution { 5 public: 6 LL maxEnergyBoost(vector<int>& A, vector<int>& B) { 7 memset(f,0,sizeof f); 8 int n=A.size(); 9 for(int i=0;i<A.size();i++){ 10 int j=i+1; 11 f[j][0]=f[j-1][0]+A[i]; 12 if(j>=2) 13 f[j][0]=max(f[j][0],f[j-2][1]+A[i]); 14 15 f[j][1]=f[j-1][1]+B[i]; 16 if(j>=2) 17 f[j][1]=max(f[j][1],f[j-2][0]+B[i]); 18 19 } 20 return max(f[n][0],f[n][1]); 21 } 22 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端