社区讨论

0分 WA求调教 悬一关

P2029跳舞参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mjqqq2xs
此快照首次捕获于
2025/12/29 13:51
2 个月前
此快照最后确认于
2026/01/01 17:10
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,t;
int ps[5005],pb[5005];
int f[5005][2];
//0:踏错 1:踏对
int sum[5005];
main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>t;
	for(int i=1; i<=n; i++) cin>>ps[i],sum[i]=sum[i-1]+ps[i];
	for(int i=1; i<=n; i++) cin>>pb[i],f[i][0]=f[i][1]=-1e18;
	int ans=-1e18;
	for(int i=1; i<=n; i++) {
		f[i][0]=max(f[i-1][1],f[i-1][0])-ps[i];
		f[i][1]=max(f[i-1][1],f[i-1][0])+ps[i];
		if(i>=t) f[i][1]=max(f[i][1],max(f[i-t][0],f[i-t][1])+sum[i]-sum[i-t]+pb[i]);
		ans=max(ans,max(f[i][0],f[i][1]));
	}
	cout<<ans;
}
我的状态转移数组 f[i][j]f[i][j] 是表是前 ii 个中第 ii 个踏或不踏的最优值

回复

3 条回复,欢迎继续交流。

正在加载回复...