这个题不算难,只是需要点时间,但是我自己写的代码还有一个2分的样例过不去,实在找不出来哪里还有漏洞,下面是23分代码,大家可以借鉴同时找找我的错误漏洞在哪,评论指出来啊谢谢啦:
#include <iostream> #include <string> #include <cstring> #include <cstdio> #include <cmath> #include <cstdlib> #include <algorithm> using namespace std; struct DD { int a; int b; double c; }A[2001]; bool cmp(DD a,DD b) { return a.c>b.c; } int main() { int n,we,i,j,num=0; double pri=0.0; scanf("%d%d",&n,&we); for(i=0;i<n;i++) scanf("%d",&A[i].a); for(i=0;i<n;i++) scanf("%d",&A[i].b); for(i=0;i<n;i++) A[i].c=A[i].b*1.0/A[i].a; sort(A,A+n,cmp); for(i=0;i<n;i++) { if(num+A[i].a<=we) { num+=A[i].a; pri+=A[i].b; } else { pri+=A[i].c*1.0*(we-num); break; } } printf("%.2f\n",pri); }