MLE求助·
查看原帖
MLE求助·
322705
Mr_Ender楼主2020/8/19 17:33
#include<bits/stdc++.h>
using namespace std;
int n,m,a[355],book[10],t;
int dp(int x){
	int ans=0;
	if(x==1){
		return a[1];
	}
	if(book[1]>=1){
		ans=max(ans,dp(x-1)+a[x]);
		book[1]--;
	}
	if(book[2]>=1){
		ans=max(ans,dp(x-2)+a[x]);
		book[2]--;
	}
	if(book[3]>=1){
		ans=max(ans,dp(x-3)+a[x]);
		book[3]--;
	}
	if(book[4]>=1){
		ans=max(ans,dp(x-4)+a[x]);
		book[4]--;
	}
	return ans;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>t;
		book[t]++;
	}
	cout<<dp(n);
	return 0;
}
2020/8/19 17:33
加载中...