您的位置:首页 > 移动开发 > IOS开发

Greedy——HDOJ 1203

2012-02-04 20:09 148 查看
HDOJ 1203 题目描述

/*
HDOJ 1203
典型的贪心,类似于01背包和部分背包的中间类型
*/
#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;

struct School
{
int a; //申请费用
double b; //录取概率
double scale; // b/a
};

bool cmp(const School &a,const School &b)
{
return (a.scale > b.scale); //按照scale降序排序
}

int main()
{
School of[1000],su[1000];
int n,m,k;
double success;
while(cin>>n>>m)
{
if((n == 0) && (m == 0))
break;
for(int i=0;i<m;i++)
{
cin>>of[i].a>>of[i].b;
of[i].scale=of[i].b/of[i].a;
}
sort(of,of+m,cmp);

success=1.0;
k=0;
for(i=0;i<m;i++)
{
if(n >= of[i].a)
{
n-=of[i].a;
su[k]=of[i];
k++;
}
}
for(i=0;i<k;i++)
success *= (1-of[i].b);
success=(1-success)*100;
cout<<setiosflags(ios::fixed);
cout<<setprecision(1)<<success<<"%"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios