0分 悬棺
查看原帖
0分 悬棺
1419521
shilige_small楼主2025/1/16 14:12
#include<bits/stdc++.h>
using namespace std;
long long n,ans,a[11000000],b,c,dp[11000000],k;                                          
int main()
{
	cin>>n>>b;
	fill(dp+1,dp+100001,99999999999);
	for(int i=1;i<=b;i++) 
	{
		cin>>a[i];
		for(int j=a[i];j<=100001;j++)                 
			dp[j]=min(dp[j],dp[j-a[i]]+1);
	}
	for(int i=1;i<=n;i++) 
	{
		cin>>c;
		c+=k-1;k=c;
		if(dp[c]==99999999999){cout<<-1;return 0;}
		ans+=dp[c];
	}
	cout<<ans;
	return 0;
}
2025/1/16 14:12
加载中...