0
已解决
#include<iostream>
#include<algorithm>
using namespace std;
struct tree{
int dj,js;
}a[110000];
bool cmp(tree a,tree b){
if(a.dj!=b.dj) return a.dj<b.dj;
}
int main()
{
int w,n,ans=0;
cin>>w>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].dj;
}
for(int i=1;i<=n;i++)
{
cin>>a[i].js;
}
sort(a+1,a+1+w,cmp);
for(int i=1;i<=w;i++){
if(w>=a[i].js){
w=w-a[i].dj;
ans+=a[i].js;
}
}
cout<<ans;
return 0;
}
哪里不对?
0
已采纳
排序应该是sort(a+1,a+1+n,cmp)
排序后的循环应该是
for(int i=1;i<=n;i++)
循环内部还要特判
else{
ans+=a[i].dj*w;//不要全买
break;
}
0
0
0
0
0