80 points
查看原帖
80 points
1424375
s_z_x楼主2024/10/7 16:46

样例1为什么没有过,回复互关%%%

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1000010;
ll f[maxn];
ll f1[maxn],sum[maxn],f2[maxn];
int main(){
	ll n,m;
	scanf("%lld%lld",&n,&m);
	for(ll i=1;i<=m;i++) scanf("%lld",&f1[i]);
	for(ll i=1;i<=n;i++) scanf("%lld",&f2[i]);
	sort(f1+1,f1+m+1);
	for(ll i=1+f1[1];i<=n+f1[m];i++) sum[i]=-1000100;
	ll ans=0;
	sum[1]=f2[1];
	for(ll i=1+f1[1];i<=n+f1[m];i++){
		for(ll j=1;j<=m;j++){
			ll a=i-f1[j];
			if(a>=1){
				sum[i]=max(sum[i],sum[a]+f2[i]);	
			}	
			if(i>=n){
				ans=max(sum[i],ans); 
			}		
		}	 
	}
	printf("%lld",ans);
}
2024/10/7 16:46
加载中...