求助代码
查看原帖
求助代码
699852
bzzltl楼主2023/6/29 10:11

查不出错了

#include<bits/stdc++.h>
using namespace std;
const int N=3e4+6;
const int M=1e3+7;
const int IM=214748367;
const long long LLM=9223372036854775807;

inline int read()
{
	int x=0,y=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-') y=-y;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+(c^'0');c=getchar();}
	return x*y;
}

int n,up,f[N],t[N][3];

signed main()
{	
	n=read();
	for(int i=1;i<=n;i++)
		for(int j=0;j<3;j++)
		{
			t[i][j]=read();
//			if(!t[i][j]) t[i][j]=IM;
//			puts("Gfd");
		}
	for(int i=1;i<=5*n;i++) f[i]=IM;
	for(int i=1;i<=n;i++)
	{
		up+=max(t[i][0],t[i][2]);
//		printf("%d\n",up);
		for(int j=up;j>=0;j--)
		{
			if(j>=t[i][0]&&t[i][0]) f[j]=min(f[j],f[j-t[i][0]]);
			if(j>=t[i][2]&&t[i][2]) f[j]=min(f[j],f[j-t[i][2]]+t[i][2]);
			if(t[i][1]) f[j]=min(f[j],f[j]+t[i][1]);
		}
	}
//	for(int i=0;i<=up;i++) printf("%d ",f[i]);
//	puts("");
	int mn=IM;
	for(int i=1;i<=up;i++) mn=min(mn,max(f[i],i));
	printf("%d\n",mn);
	return 0;
}
2023/6/29 10:11
加载中...