WAon较大数据求助
查看原帖
WAon较大数据求助
537654
FS_NEO楼主2024/10/29 21:37

思路: 先以1~n为一天DP一次

再以2~n,1为一天DP一次

不知为何WA,求大佬解答orz

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int MAXN=4005;
ll n,m,a[MAXN],f[MAXN][2],ans,tmp;
int main(){
	memset(f,-0x3f,sizeof(f));
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i];
    f[0][0]=0;
    for(int i=1;i<=n;i++){
    	for(int j=m;j>=0;j--){
    		f[j][0]=max(f[j][0],f[j][1]);
    		if(j)f[j][1]=max(f[j-1][0],f[j-1][1]+a[i]);
		}
	}
	ans=max(f[m][0],f[m][1]);
	memset(f,-0x3f,sizeof(f));
	tmp=a[1];
	for(int i=1;i<n;i++)a[i]=a[i+1];
	a[n]=tmp;
    f[0][0]=0;
    for(int i=1;i<=n;i++){
    	for(int j=m;j>=0;j--){
    		f[j][0]=max(f[j][0],f[j][1]);
    		if(j)f[j][1]=max(f[j-1][0],f[j-1][1]+a[i]);
		}
	}
	cout<<max(ans,max(f[m][0],f[m][1]));
    return 0;
}
2024/10/29 21:37
加载中...