这个代码我没能发现问题,于是来这求助,望大佬看到后能够指导一下:
题目传送门:部分背包问题
代码是这样的:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
int n;
double t,b[105];
struct node{
double w;
double m;
double dw;
}a[105];
bool cmp(node x,node y){
return x.dw<y.dw;
}
int main(){
cin>>n>>t;
for(int i=1;i<=n;i++){
cin>>a[i].w>>a[i].m;
a[i].dw=a[i].m/a[i].w;
}
sort(a+1,a+n+1,cmp);
int i=n;
double cnt=0;
while(t>=0){
t-=a[i].w;
cnt+=a[i].m;
i--;
}
i++;
cnt-=abs(0-t)*a[i].dw;
cout<<fixed<<setprecision(2)<<cnt;
return 0;
}
好像没错,但只得80分!错一个样例点