关于今天ABC的F
  • 板块灌水区
  • 楼主abruce
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/2/20 22:35
  • 上次更新2023/11/5 02:57:58
查看原帖
关于今天ABC的F
104324
abruce楼主2021/2/20 22:35

我的dp哪里挂了

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=105;
int f[maxn][maxn][maxn],n,a[maxn],b[maxn],m,ans=1e18;//前i个选j个modw为k
signed main()
{
	scanf("%lld%lld",&n,&m);
	for(register int i=1;i<=n;i++)scanf("%lld",&a[i]);
	for(register int w=1;w<=n;w++)
	{
		for(register int i=0;i<maxn;i++)for(register int j=0;j<maxn;j++)for(register int k=0;k<maxn;k++)f[i][j][k]=-1e17;
		f[0][0][0]=0;
		for(register int i=1;i<=n;i++)
		{
			b[i]=a[i]%w;
			for(register int j=1;j<=w;j++)
			{
				for(register int k=0;k<w;k++)f[i][j][k]=max(f[i-1][j][k],f[i-1][j-1][(k-b[i]+w)%w]+a[i]);
			}
			if(i!=n)f[i][0][0]=0;
		}
		if(f[n][w][m%w]==-1e17)continue;
		ans=min(ans,(m-f[n][w][m%w])/w);
	}
	printf("%lld",ans);
	return 0;
}
2021/2/20 22:35
加载中...