题目链接: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;}