90pts求调(玄关)
查看原帖
90pts求调(玄关)
601747
xibaohe楼主2024/11/22 15:39

求调

WA on #6

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],b[100005],c[100005];
int dp[100005][3][2];
int fi[100005][3][2];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];
	fi[1][0][0]=0;dp[1][0][0]=a[1];
	fi[1][1][0]=1;dp[1][1][0]=b[1];
	fi[1][2][1]=2;dp[1][2][1]=c[1];
	fi[1][1][1]=1;dp[1][1][1]=b[1];
	for(int i=2;i<=n;i++)
	{
		if(dp[i][0][0]<=dp[i-1][1][1]+a[i])
		{
			dp[i][0][0]=dp[i-1][1][1]+a[i];
			fi[i][0][0]=fi[i-1][1][1];
		}
		if(dp[i][0][0]<=dp[i-1][2][1]+a[i])
		{
			dp[i][0][0]=dp[i-1][2][1]+a[i];
			fi[i][0][0]=fi[i-1][2][1];
		}
		if(dp[i][1][0]<=dp[i-1][2][1]+b[i])
		{
			dp[i][1][0]=dp[i-1][2][1]+b[i];
			fi[i][1][0]=fi[i-1][2][1];
		}
		if(dp[i][2][1]<=dp[i-1][0][0]+c[i])
		{
			dp[i][2][1]=dp[i-1][0][0]+c[i];
			fi[i][2][1]=fi[i-1][0][0];
		}
		if(dp[i][2][1]<=dp[i-1][1][0]+c[i])
		{
			dp[i][2][1]=dp[i-1][1][0]+c[i];
			fi[i][2][1]=fi[i-1][1][0];
		}
		if(dp[i][2][1]<=dp[i-1][0][0]+c[i])
		{
			dp[i][2][1]=dp[i-1][0][0]+c[i];
			fi[i][2][1]=fi[i-1][0][0];
		}
		if(dp[i][1][1]<=dp[i-1][0][0]+b[i])
		{
			dp[i][1][1]=dp[i-1][0][0]+b[i];
			fi[i][1][1]=fi[i-1][0][0];
		}
	}
	if(fi[n][0][0]<=0) dp[n][0][0]=0;
	if(fi[n][1][0]<=1) dp[n][1][0]=0;
	if(fi[n][2][1]>=2) dp[n][2][1]=0;
	if(fi[n][1][1]>=1) dp[n][1][1]=0;
	cout<<max(max(dp[n][0][0],dp[n][1][0]),max(dp[n][2][1],dp[n][1][1]))<<endl;
	return 0;
}


2024/11/22 15:39
加载中...