《数据强大,搜索 0 分,请使用多重背包。》
查看原帖
《数据强大,搜索 0 分,请使用多重背包。》
1109067
zhangyuze1楼主2024/9/5 20:09

《数据强大,搜索 0 0 分,请使用多重背包。》

code (AC)

#include<bits/stdc++.h>
using namespace std;
int n, m, ans;
struct node
{
	int a;
	int b;
	int c;
	int sum;
	string name;
}bag[1002];

bool cmp(node a, node b)
{
	return a.sum > b.sum;
}

int main()
{
    cin >> m >> n;
    m = 21 - m;
    for(int i = 1; i <= n; i++)
    	cin >> bag[i].a >> bag[i].b >> bag[i].c >> bag[i].name;
    	
    for(int i = 1; i < n; i++)
    	for(int j = i + 1; j <= n; j++)
    		if(bag[i].name == bag[j].name)
    			if(bag[i].a + bag[j].a > bag[i].c)
    				bag[j].a += bag[i].a, bag[j].a -= bag[i].c, bag[i].a = bag[i].c;
    			else
	    			bag[i].a += bag[j].a, bag[j].a = 0;
    		
    for(int i = 1; i <= n; i++)
    	bag[i].sum = bag[i].a * bag[i].b;
    sort(bag + 1, bag + n + 1, cmp);
    
    int i = 1;
    while(m--)
    	ans += bag[i++].sum;
    
    cout << ans;
    return 0;
} 

好一个“强大”法啊

2024/9/5 20:09
加载中...