90分,求调
查看原帖
90分,求调
1036707
chzhh_111楼主2024/5/26 20:06

WA 第六点

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+1;
int n;
struct tree{
	int a,b,c;
}t[N];
struct dp{
	int x,y;
}f[6];
signed main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&t[i].a,&t[i].b,&t[i].c);
	for(int i=1;i<=n;i++)
	{
		dp f0=f[0],f1=f[1],f2=f[2],f3=f[3],f4=f[4],f5=f[5];
		f[0]=(dp){f2.x+t[i].a,f2.y};
		if(f4.x>f5.x) f[1]=(dp){f4.x+t[i].a,f4.y};
		  else f[1]=(dp){f5.x+t[i].a,f5.y};
		if(f0.x>f1.x) f[2]=(dp){f0.x+t[i].b,f0.y};
		  else f[2]=(dp){f1.x+t[i].b,f1.y};
		if(f4.x>f5.x) f[3]=(dp){f4.x+t[i].b,f4.y};
		  else f[3]=(dp){f5.x+t[i].b,f5.y};
		if(f0.x>f1.x) f[4]=(dp){f0.x+t[i].c,f0.y};
		  else f[4]=(dp){f1.x+t[i].c,f1.y};
		f[5]=(dp){f3.x+t[i].c,f3.y};
		if(i==1) for(int i=0;i<6;i++) f[i].y=i;
	}
	int ans=0;
	for(int i=0;i<6;i++)
	{
		if(i==2||i==3)
		{
			if(f[i].y!=2&&f[i].y!=3)
			  ans=max(f[i].x,ans);
		}
		else ans=max(f[i].x,ans);
	}
	printf("%d",ans);
	return 0;
}
2024/5/26 20:06
加载中...