#include<stdio.h>
#include<string.h>
int main()
{
int sum,num;
int i,m,n,j,haha;
double temp;
int an[1000];
int bn[1000];
double cn[1000];
int panduan;
double jishu,dada;
panduan=jishu=dada=0;
scanf("%d%d",&sum,&num);
for(i=0;i<sum;i++)
{
scanf("%d",&m);
an[i]=m;
}
for(i=0;i<sum;i++)
{
scanf("%d",&n);
bn[i]=n;
}
for(i=0;i<sum;i++)
{
cn[i]=(double)bn[i]/(double)an[i];
}
for(i=1;i<sum;i++)
for(j=0;j<sum-1;j++)
{
if(cn[j]<cn[j+1])
{
temp=cn[j];cn[j]=cn[j+1];cn[j+1]=temp;
haha=an[j];an[j]=an[j+1];an[j+1]=haha;
haha=bn[j];bn[j]=bn[j+1];bn[j+1]=haha;
}
}
/*for(i=0;i<sum;i++)
{
printf("%d %d %lf",an[i],bn[i],cn[i]); //测试时候的输出,判断冒泡成功与否
printf("\n");
}*/
for(i=0;i<sum;i++)
{
panduan=panduan+an[i];
if(num>panduan)jishu=jishu+(double)bn[i];
else {panduan=panduan-an[i];dada=cn[i]*(num-panduan);jishu=jishu+dada;break;}
}
printf("%.2lf",jishu);
return 0;
}
牛客网 月饼题https://www.nowcoder.com/pat/6/problem/4047、
记一次很复杂的题的AC体验,而且还是一遍过哈哈哈哈哈哈哈
冒泡法的应用,然后排序,已经最后输出
这是不是贪心法呢,嘻嘻嘻嘻