U93359.贪心板子题?

入门

COCI

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有n个金块,i号价值是w[i],代价是v[i]。
可承受最大代价是m,求可获得的最大价值。

输入格式

第一行输入m,n
接下来2~n+1行
第i行输入w[i-1],v[i-1]

输出格式

输出可获得的最大价值

输入输出样例

  • 输入#1

    10 5
    1 1
    2 2
    3 3
    4 4
    5 5

    输出#1

    10

说明/提示

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct gold{
	int v,w;
}g[11];
bool cmp(gold a,gold b){
	double pera=1.0*a.v/a.w;
    double perb=1.0*b.v/b.w;
    return pera==perb?a.v>b.v:pera>perb;
}
int main(){
	cin>>m>>n;
    for(int i=1;i<=n;i++)
    	cin>>g[i].w>>g[i].v;
    sort(g+1,g+1+n,cmp);
    int now=0,ans=0;
    for(int i=1;i<=n;i++)
    	if(now+g[i].w<=m){
        	ans+=g[i].v;
            now+=g[i].w;
        }
    cout<<ans;
	return 0;
}

如若未能AC请看题解中作者的声明
n,m<=10
不用开long long

首页