2618 - 营养膳食

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

阿月正在女朋友宁宁的监督下完成自己的增肥计划。

为了增肥,阿月希望吃到更多的脂肪。然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养。阿月通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超过若干份。比如就一顿饭来说,肉类不宜吃超过1份,鱼类不宜吃超过1份,蛋类不宜吃超过1份,蔬菜类不宜吃超过2份。阿月想要在营养膳食的情况下吃到更多的脂肪,当然阿月的食量也是有限的。

题目输入

输入第一行包含三个正整数n(n≤200),m(m≤100)和k(k≤100)。表示阿月每顿饭最多可以吃m份食品,同时有n种食品供阿月选择,而这n种食品分为k类。第二行包含k个不超过10的正整数,表示可以吃1到k类食品的最大份数。接下来n行每行包括2个正整数,分别表示该食品的脂肪指数ai和所属的类别bi,其中ai≤100,bi≤k。

题目输出

输出一个数字即阿月可以吃到的最大脂肪指数和。

输入/输出样例

输入格式

6 6 3
3 3 2
15 1
15 2
10 2
15 2
10 2
5 3

输出格式

60

C++解答

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<queue>
using namespace std;
struct pos
{
	int num;
	int dist;
}f[500];
int cmp(pos i,pos j)
{
	return i.num>j.num;
}
int main()
{
	int n,m,k;
	cin>>n>>m>>k;
	int maxk[k+10];
	for(int i=1;i<=k;++i)
	{
		cin>>maxk[i];
	}
	
	for(int i=1;i<=n;++i)
	{
		cin>>f[i].num>>f[i].dist;
	}
	
	sort(f+1,f+n+1,cmp);
	int ans=0;
	int sum=0;
	for(int i=1;i<=n;++i)
	{
		if(maxk[f[i].dist]!=0)
		{
			ans=ans+f[i].num;
			maxk[f[i].dist]--;
			sum++;
		}
		if(sum==m)
		{
			break;
		}
	}
	cout<<ans;
	return 0;
	
	
}

Java解答

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt();
		int m = sc.nextInt();
		int k = sc.nextInt();
		int[] flag = new int[k+1];
		ArrayList<ttt> al = new ArrayList<>();
		for (int i = 1; i <= k; i++) {
			flag[i]=sc.nextInt();
		}
		for (int i = 0; i < n; i++) {
			al.add(new ttt(sc.nextInt(),sc.nextInt()));
		}
		Collections.sort(al);
		int j = m;
		int i = 0;
		int s = 0;
		while(j>0&&i<n) {
			if(flag[al.get(i).b]>0) {
				j--;
				flag[al.get(i).b]--;
				s+=al.get(i).a;
			}
			i++;		
		}
		System.out.println(s);
	}

}
class ttt implements Comparable<ttt>{
	int a;
	int b;
	public ttt(int a, int b) {
		super();
		this.a = a;
		this.b = b;
	}
	@Override
	public int compareTo(ttt o) {
		// TODO Auto-generated method stub
			return o.a-this.a;
	}
	
}