只有28的DP,求找错
查看原帖
只有28的DP,求找错
481621
Zhang_Wenjie楼主2022/7/25 11:07

fi,j,1/2f_{i,j,1/2}表示在第ii时刻移动过jj次在第1122树下能接到最大的苹果数量.

#include<bits/stdc++.h>
using namespace std;
int t,w,down[1001],f[1001][31][2];
int main()
{
	cin>>t>>w;
	for(int i=1;i<=t;i++) cin>>down[i];
	memset(f,-1e6,sizeof(f));
	for(int j=0;j<=w;j++) 
	{
		f[0][j][1]=0;
		f[0][j][2]=0;
	}
	for(int i=1;i<=t;i++)
		for(int j=1;j<=w;j++)
		{
			if(down[i]==1)
				{
					f[i][j][1]=max(f[i][j][1],max(f[i-1][j][1],f[i-1][j-1][2])+1);
					f[i][j][2]=max(f[i][j][2],max(f[i-1][j][2],f[i-1][j-1][1]));
				}
			else
				{
					f[i][j][2]=max(f[i][j][2],max(f[i-1][j][2],f[i-1][j-1][1])+1);
					f[i][j][1]=max(f[i][j][1],max(f[i-1][j][1],f[i-1][j-1][2]));
				}
			    
		}
		int ans=-1e6;
	for(int j=1;j<=w;j++)
	{
		int tmp=max(f[t][j][1],f[t][j][2]);
		if(tmp>ans) ans=tmp;
	}
	cout<<ans;
	return 0;
}
2022/7/25 11:07
加载中...