社区讨论
额外提供一种空间复杂度O(1) 的做法
AT_abc162_f [ABC162F] Select Half参与者 27已保存回复 97
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 97 条
- 当前快照
- 1 份
- 快照标识符
- @lo33pjss
- 此快照首次捕获于
- 2023/10/24 00:17 2 年前
- 此快照最后确认于
- 2023/10/24 00:17 2 年前
这一篇题解的优化依然没有到尽头。
我们发现在转移中, 只和 相关,所以可以直接把 这一维压掉。
然后发现 也没啥存的必要性,也压掉。
空间复杂度 了。
CPP#include <stdio.h>
#include <algorithm>
using std::max;
long long f[2][3];
int main()
{
int n,i,x;
scanf("%d %d",&n,&x);
f[1][2]=x;
for(i=2;i<=n;++i)
{
scanf("%d",&x);
f[i&1][0]=max(f[!(i&1)][1],f[!(i&1)][i%2*2]);
f[i&1][1]=i%2*x+f[!(i&1)][!(i%2)*2];
f[i&1][2]=f[!(i&1)][i%2]+x;
}
printf("%lld\n",max(f[n&1][!(n%2)*2],f[n&1][1]));
}
回复
共 97 条回复,欢迎继续交流。
正在加载回复...