水提,不讲太多,就是最基础的贪心算法
代码如下:
- #include<iostream>
- #include<cstdio>
- #include<iomanip>
- using namespace std;
- typedef struct Node
- {
- int p;
- int h;
- }data;
- int Comp(const void *p1,const void *p2)
- {
- return ((Node *)p2)->p < ((Node *)p1)->p ? 1 : -1;
- }
- int main()
- {
- int c;
- data rice[1000];
- cin>>c;
- while(c)
- {
- float buy=0;
- int n,m;
- cin>>n>>m;
- for(int i=0;i<m;i++)
- cin>>rice[i].p>>rice[i].h;
- qsort(rice,m,sizeof(data),Comp);
- // for(i=0;i<m;i++)
- // cout<<rice[i].p<<" "<<rice[i].h<<endl;
- for(i=0;i<m;i++)
- {
- if(n<rice[i].h*rice[i].p)
- {
- buy+=(float)n/rice[i].p;
- break;
- }
- else
- {
- buy+=rice[i].h;
- n=n-rice[i].h*rice[i].p;
- }
- }
- printf("%.2f/n",buy);
- c--;
- }
- return 0;
- }