题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2570
题目的意思:给你n个体积相同浓度不同的解药,让你配置出浓度不大于w的最大体积的解药:
解题过程:就是一个简单的排序加判断。弄了很久还是没有弄好,后来才发现是qsort应用不当,qsort默认的排序都是从0 开始的, 而我的习惯则是从第一个开始输入,所以一直没找出错误; 排序是按浓度从小到大排学,一旦大于w就跳出循环,有两种特殊情况;最后一个满足和都不满足,加以判断 输出就行;
代码如下
#include <stdio.h> int main() { int a[100010]; int n ; scanf("%d",&n); while(n--) { int m , i , j, k, t = 1 ,max = 0; scanf("%d",&m); for (i = 1;i <= m ; i ++ ) { scanf("%d",&a[i]); getchar(); } for (i = 1; i<= m ; i ++) { int sum1 = 0 ,sum2 =0; double av = a[i]/2.0; for (j = 1; j <= m ; j ++) { if (a[j] >= a[i]) sum1 ++; if (a[j] >= av) sum2++; if (a[j]*1.0/av ==2) sum2++; } if (sum1> sum2) max = sum1 ; else max = sum2; } printf("%d\n",max); } return 0; }