/** \brief hdu 1009--greedy * * \param date 2014/7/18 * \param state AC * \return * */ #include <iostream> #include <fstream> #include <algorithm> #include <cstring> using namespace std; const int MAXN=1001; struct Data { int J; int F; /* bool operator < (const Data& d) const { return d. } */ double price; }; Data data[MAXN]; bool Comp(const Data& a,const Data& b) { if(a.price>=b.price) return true; else return false; } //void Knapsack(int n,int m,int v[],int w[],int x[]) void Knapsack(int n,int m) { //Sort(data,data+n,Comp); sort(data,data+n,Comp); int i; int c=m; double sum=0.0; for(i=0;i<n;i++) { if(c>=data[i].F) { c-=data[i].F; sum+=data[i].J; } else { sum+=c*1.0/data[i].F*data[i].J; c=0; } } printf("%.3f",sum); cout<<endl; } int main() { //freopen("input.txt","r",stdin); int M,N; while(scanf("%d%d",&M,&N)!=EOF) { if(M==-1 && N==-1)break; for(int i=0;i<N;i++) { //cin>>J[i]>>F[i]; cin>>data[i].J>>data[i].F; data[i].price=data[i].J*1.0/data[i].F; } // Knapsack(N,M); } return 0; }
时间: 2024-10-20 07:09:01