原题地址:点击打开链接
这一题的坑在于题目,题目里
“每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、
以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。
随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);
最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。“”
从正整数到正数的变化,很容易就忘了,结果导致一直有一个测试点过不掉
讲库存量与总售价改成double类型后一次就过了
另外就是这道题应该用结构体排序(sort函数)来写
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; struct item { double quatity,sale,per; //per为单价 }; item it[1050]; bool comp(const item &a,const item &b) { return a.per > b.per; } int main(void) { int N {0},D {0}; double revenue {0}; //N for categories , D for Num of needing //revenue 为总利润 cin>>N>>D; for(int i = 0; i <N; i++) { cin>>it[i].quatity; } for(int i = 0; i <N; i++) { cin>>it[i].sale; it[i].per = it[i].sale/(it[i].quatity *1.0) ; } sort (it,it + N,comp); for(int i = 0; i <N && D > 0; i++) { if (it[i].quatity <= D ) { D -= it[i].quatity; revenue += it[i].sale; } else { revenue += D*it[i].per; break; } } printf("%.2lf",revenue); return 0; }