这个,杭电上也有几乎一模一样的题,好像是那题是要买米,同样测试数据太大,不贴上来
/* ID:linyvxi1 TASK:milk LANG:C++ */ #include <stdio.h> #include <algorithm> using namespace std; typedef struct Fa{ int P; int A; }Fa; Fa fa[5000]; int N,M; bool cmp(Fa a,Fa b) { return a.P<b.P; } int main() { FILE* fin=fopen("milk.in","r"); FILE* fout=fopen("milk.out","w"); fscanf(fin,"%d%d",&N,&M); int i; for(i=0;i<M;i++) fscanf(fin,"%d%d",&fa[i].P,&fa[i].A); sort(fa,fa+M,cmp); int cur=0,cost=0; for(i=0;i<M;i++){ if(cur==N) break; if(N-cur<=fa[i].A){ cost+=(N-cur)*fa[i].P; break; } else{ cost+=fa[i].A*fa[i].P; cur+=fa[i].A; } } fprintf(fout,"%d\n",cost); }