贪心算法
Fatmouse’Trade
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <stdio.h>
#include <iomanip>
using namespace std;
struct goods
{
double catFood;
double javabean;
double w ;
bool operator <(const goods & g)const{
return w-g.w > 0;
}
}buf[1000];
int main()
{
double m;
int n;
cin >> m >> n;
double result=0;
while (m!= -1 && n!= -1)
{
for (int i=0;i<n;i++)
{
cin>>buf[i].javabean >> buf[i].catFood;
buf[i].w = (float)buf[i].javabean/buf[i].catFood;
}
sort(buf,buf+n);
result =0;
for (int i=0;i<n && m > 0;i++)
{
if (buf[i].catFood <= m )
{
m = m - buf[i].catFood ;
result += buf[i].javabean;
}
else{
result += buf[i].w * m;
m = 0 ;
}
}
printf("%.3lf\n",result);
cin >> m >>n;
}
return 0;
}
今年暑假不AC
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int N = 100;
struct show
{
int start ;
int end1;
bool operator < (const show &a)const{
return end1 < a.end1 ;
}
};
bool cmp(const show &a,const show &b)
{
return a.end1 <= b.end1 ;
}
int main()
{
int n,i,j;
show show[N];
while (cin >> n && n!=0)
{
for (i=0;i<n;i++)
{
cin >> show[i].start >>show[i].end1 ;
}
sort(show,show+n,cmp);
int sum = 1;
for (i = 0 , j = 1;i < n && j < n; j++)
{
if (show[j].start >= show[i].end1)
{
sum ++;
i=j;
}
}
cout << sum << endl;
}
return 0;
}