P1060 开心的金明速速求解
  • 板块题目总版
  • 楼主ShouJiaWei
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/23 21:36
  • 上次更新2024/10/23 22:51:59
查看原帖
P1060 开心的金明速速求解
1430056
ShouJiaWei楼主2024/10/23 21:36

P1060 开心的金明

大佬求解

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 ? N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 ? N 元。于是,他把每件物品规定了一个重要度,分为 5 5 等:用整数 1 − 5 1−5 表示,第 5 5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过 ? N 元(可以等于 ? N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

样例:1000 5 800 2 400 5 300 5 400 3 200 2

输出:3900

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[30],b[30],c[30],k;
int main ()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++){
		cin>>a[i]>>b[i];
		k=a[i]*b[i];
		c[i]=k;
	}
	for(int i=1;i<m;i++){
		for(int j=i+1;j<=m;j++){
			if(c[i]<c[j]){swap(c[i],c[j]);swap(a[i],a[j]);}
		}
	}
	k=0;
	for(int i=1;i<=m;i++){
		if(n>a[i]){n-=a[i];k+=c[i];}
	}
	cout<<k;
    return 0;  
}

快快求解

2024/10/23 21:36
加载中...