一句话题意:
给你一个序列,对每一个数字你可以选择打或者不打,当打的次数为偶数时,奖励翻1倍(2*ai),奇数时1倍(ai),不打奖励为0。求最大得分。
我真的傻叉了。。。第二维表示奇偶性f[][],而我一开始表示当前位置打不打。。。
#include<bitsstdc++.h>
#include<climits>
#define int long long
using namespace std;
int n, a[200005], g[200005][3],f[200005][3];
signed main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin>>n; for(int i = 1; i <= n; i++) cin>>a[i];
f[0][0] = 0;
f[0][1] = LONG_LONG_MIN;
for(int i = 1; i <= n; i++) {
f[i][1] = max (f[i - 1][1], f[i - 1][0] + a[i]);
f[i][0] = max (f[i - 1][0], f[i - 1][1] + a[i] * 2);
}
cout<<max(f[n][0], f[n][1])<<endl;
return 0;
}
以下是我s的代码
// for(int i = 1; i <= n; i++){
// if(g[i-1][1] % 2 == 1){//ji
// if(f[i-1][1] + 2 * a[i] > f[i][1]){
// f[i][1] = f[i-1][1] + 2 * a[i];
// g[i][1] = g[i-1][1] + 1;
// }
// if(f[i-1][1] > f[i][0]){
// f[i][0] = f[i-1][1];
// g[i][0] = g[i-1][1];
// }
// }
// if(g[i-1][1] % 2 == 0){//ou
// if(f[i-1][1] + a[i] > f[i][1]){
// f[i][1] = f[i-1][1] + a[i];
// g[i][1] = g[i-1][1] + 1;
// }
// if(f[i-1][1] > f[i][0]){
// f[i][0] = f[i-1][1];
// g[i][0] = g[i-1][0];
// }
// }
// if(g[i-1][0] % 2 == 1){//上一个没打,到i-1是奇数
// if(f[i-1][0] + 2 * a[i] > f[i][1]){
// f[i][1] = f[i-1][0] + 2 * a[i];
// g[i][1] = g[i-1][0] + 1;
// }
// if(f[i-1][0] > f[i][0]){
// f[i][0] = f[i-1][0];
// g[i][0] = g[i-1][0];
// }
// }
// if(g[i-1][0] % 2 == 0){//上一个没打,到i-1是偶数
// if(f[i-1][0] + a[i] > f[i][1]){
// f[i][1] = f[i-1][0] + a[i];
// g[i][1] = g[i-1][0] + 1;
// }
// if(f[i-1][0] > f[i][0]){
// f[i][0] = f[i-1][0];
// g[i][0] = g[i-1][0];
// }
// }
// }
// cout<<f[4][0]<<endl;
// cout<<g[4][0]<<endl;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-09-02 拓扑排序