不太清楚是特殊点没考虑到,还是本身算法有错误。求各位前辈帮忙看一看,谢谢!
#include<bits/stdc++.h>
using namespace std;
struct medicine{
int t,m;
}x[10008];
bool cmp(medicine a,medicine b){
return a.t*b.m<a.m*b.t;
}
int main(){
long long t,m;
long ans;
cin>>t>>m;
for(int i=1;i<=m;i++) cin>>x[i].t>>x[i].m;
sort(x+1,x+1+m,cmp);
// for(int i=1;i<=m;i++) cout<<x[i].t<<" "<<x[i].m<<endl;
// cout<<endl;
for(int i=1;i<=m;){
if(x[i].t<=t){
ans+=x[i].m;
t-=x[i].t;
}
else
{
i++;
}
}
cout<<ans;
}