裂开了...还有两个WA
查看原帖
裂开了...还有两个WA
561745
Gan_yu_楼主2022/1/24 14:03
#include<bits/stdc++.h>
using namespace std;
int main(){
	int m,n;
	cin>>m>>n;
	m=21-m;
	int a[n],p[n],ma[n];//数量,价格,最大堆叠 
	string s[n];
	for(int i=0;i<n;i++){
		cin>>a[i]>>p[i]>>ma[i]>>s[i];
		for(int j=0;j<i;j++)
		{
			if(s[i]==s[j])
			{
				a[j]+=a[i];
				s[i]="no";//标记这个东西没了 
			}
		}
	}
	int dp[m+1];
	memset(dp,0,sizeof(dp));
	for(int i=0;i<n;i++)
	{
		if(s[i]=="no")
		continue;
		for(int j=1;j<=m;j++){
			if(a[i]<=ma[i]&&dp[j]<dp[j-1]+p[i]*a[i])
			{
							dp[j]=dp[j-1]+p[i]*a[i];
							s[i]="no";
			}
			else if(dp[j]<dp[j-1]+p[i]*a[i]){
				dp[j]=dp[j-1]+p[i]*ma[i];
				a[i]-=ma[i];
				
			}//分比一组多or少 
		}
	}
	cout<<dp[m];
}
2022/1/24 14:03
加载中...