一个点RE 悬棺
查看原帖
一个点RE 悬棺
1419521
shilige_small楼主2025/1/16 16:56
#include<bits/stdc++.h>
using namespace std;
long long n,ans,a[1100000],b,c[1100000],dp[1100000],k;                                          
int main()
{
	cin>>n>>b;
	fill(dp+1,dp+100001,99999999);
	for(int i=1;i<=b;i++) 
	{
		cin>>a[i];
		for(int j=a[i];j<=1000001;j++)                 
			dp[j]=min(dp[j],dp[j-a[i]]+1);
	}
	for(int i=1;i<=n;i++) 
	{
		cin>>c[i];k=c[i];
		if(i!=1&&c[i-1]!=0) k-=c[i-1]-1;
		if(dp[k]==99999999||k<0){cout<<-1;return 0;}
		ans+=dp[k];
	}
	cout<<ans;
	return 0;
}
2025/1/16 16:56
加载中...