#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體驗,而且還是一遍過哈哈哈哈哈哈哈
冒泡法的應用,然後排序,已經最後輸出
這是不是貪心法呢,嘻嘻嘻嘻