入门赛H题求调
  • 板块灌水区
  • 楼主pies_0x
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/9/14 21:19
  • 上次更新2024/9/15 08:18:30
查看原帖
入门赛H题求调
964645
pies_0x楼主2024/9/14 21:19

WA了一个点

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

#define N 1005
#define int long long

int n;
int as[N],bs[N];
int p[N][2],idx;
int dp[N][N];

signed main()
{
	scanf("%lld",&n);
	int k=1;
	for(int i=1;i<=n;++i)
		scanf("%lld",&as[i]);
	for(int i=1;i<=n;++i)
		scanf("%lld",&bs[i]);
	for(int i=1;i<=n;++i)
	{
		int a=as[i],b=bs[i];
//		scanf("%lld%lld",&a,&b);
		if(a<b)
		{
			++k;
			++idx;
			p[idx][0]=b-a+1;
			p[idx][1]=2;
		}
		else if(a==b)
		{
			++idx;
			p[idx][0]=1;
			p[idx][1]=1;
		}
		else --k;
	}
	if(k>0)
	{
		memset(dp,0x3f,sizeof dp);
		for(int i=0;i<=idx;++i)
			dp[i][0]=0;
		for(int i=1;i<=idx;++i)
			for(int j=1;j<=k;++j)
				dp[i][j]=min(dp[i-1][j],dp[i-1][max(0ll,j-p[i][1])]+p[i][0]);
		printf("%lld",dp[idx][k]);
	}
	else
		putchar('0');
	return 0;
}
2024/9/14 21:19
加载中...