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