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;
}
/*
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;
}
相关文章推荐
- hdoj1203
- hdoj 4976 A simple greedy problem.【dp】
- hdoj 1203 I NEED A OFFER!【0-1背包+逆向思维】
- hdoj 1203 I NEED A OFFER!
- hdoj 1203 01背包变形
- Greedy——HDOJ 1009
- HDOJ1203 I NEED A OFFER!
- HDOJ-1203 I NEED A OFFER!
- HDOJ 1203 I NEED A OFFER!(01背包)
- HDOJ 1203 I NEED A OFFER!(简单背包)
- Greedy——HDOJ 2037
- HDOJ 1203 I NEED A OFFER! (01背包)
- hdoj 1203 I NEED A OFFER! 【另类01背包】【概率背包】
- HDOJ1203(01背包 概率)
- HDOJ 1203
- Greedy——HDOJ 1050
- Greedy——HDOJ 1052
- HDOJ1203
- hdoj 1203 I NEED A OFFER! 【01-背包】
- HDU/ HDOJ 1203 I NEED A OFFER!(DP,0/1 背包)