zoj 2109 简单贪心背包
2014-12-30 19:03
246 查看
用qsort过不了,sort就过了不知道为什么
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <algorithm>
using namespace std;
struct fm{
int j,f;
double jperf;
} cat[1010];
bool cmp( struct fm a,struct fm b )
{
return a.jperf>b.jperf;
}
int main(){
int m,n;
while(scanf("%d%d",&m,&n)&&m>=0&&n>=0){
int i;
for(i = 0;i<n;i++){
scanf("%d%d",&cat[i].j,&cat[i].f);
cat[i].jperf = cat[i].j *1.0 / cat[i].f;
}
sort(cat,cat + n,cmp);
i = 0;
double jb = 0;
while(m>0&&i<n){
if(cat[i].f<m){
m -= cat[i].f;
jb += cat[i].j;
}
else {
jb += cat[i].jperf*m;
m = 0;
}
i++;
}
printf("%.3lf\n",jb);
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <algorithm>
using namespace std;
struct fm{
int j,f;
double jperf;
} cat[1010];
bool cmp( struct fm a,struct fm b )
{
return a.jperf>b.jperf;
}
int main(){
int m,n;
while(scanf("%d%d",&m,&n)&&m>=0&&n>=0){
int i;
for(i = 0;i<n;i++){
scanf("%d%d",&cat[i].j,&cat[i].f);
cat[i].jperf = cat[i].j *1.0 / cat[i].f;
}
sort(cat,cat + n,cmp);
i = 0;
double jb = 0;
while(m>0&&i<n){
if(cat[i].f<m){
m -= cat[i].f;
jb += cat[i].j;
}
else {
jb += cat[i].jperf*m;
m = 0;
}
i++;
}
printf("%.3lf\n",jb);
}
return 0;
}
相关文章推荐
- zoj 2109 FatMouse' Trade (纯水背包问题~贪心❤)
- zoj 2109 FatMouse' Trade简单的贪心 (注意double数组的排序问题)
- ZOJ 2109 FatMouse' Trade (背包 dp + 贪心)
- zoj 2109 FatMouse' Trade 部分背包
- 简单DP 01 背包 饭卡HDU 2546 ( 饭卡 ) 不知道算不算是稍稍加了点贪心的思想~
- Codeforces 755 F. PolandBall and Gifts (简单贪心+二进制优化多重背包)
- zoj 2014 || poj 1384 Piggy-Bank(完全背包简单变形。)
- zoj 3689 Digging 贪心+01背包
- ZOJ 3201 树形dp+背包(简单题)
- zoj 3689 简单背包
- 贪心 简单背包问题
- ZOJ-3211-Dream City-DP背包问题+贪心
- ZOJ 2109 FatMouse's Trade(贪心)
- zoj 2109 || hdoj1009 FatMouse' Trade(贪心)
- ZOJ 3682 简单dp 背包
- ZOJ 2109 FatMouse' Trade (背包 dp + 贪婪)
- ZOJ - 3956 Course Selection System 贪心-背包思想
- ZOJ 3703 Happy Programming Contest(贪心+0/1背包)
- nyoj 106 背包问题(简单贪心)
- ZJU2109 FatMouse' Trade - 简单贪心