我是靠谱客的博主 英勇黄豆,最近开发中收集的这篇文章主要介绍1001homework临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:

描述

临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心! 因为他的心思全在暑假作业上:目前为止还未开动(-_-!!还以为他有多冷静呢)。

暑假作业是很多张试卷,我们这些从试卷里爬出来的人都知道,卷子上的题目有选择题、填空题、简答题、证明题等。 而做选择题的好处就在于工作量很少,但又因为选择题题目都普遍很长。 如果有5张试卷,其中4张是选择题,最后一张是填空题,很明显做最后一张所花的时间要比前4张长很多。 但如果你只做了选择题,虽然工作量很少,但表面上看起来也已经做了4/5的作业了。 I_Love_C决定就用这样的方法来蒙混过关。

他统计出了做完每一张试卷所需的时间以及它做完后能得到的价值(按上面的原理,选择题越多价值当然就越高咯)。 现在就请你帮他安排一下,用他仅剩的一点时间来做最有价值的作业。需要注意的是,I_Love_C剩下的暑假时间真的很少,有可能不能完成整张卷子,而每张试卷的价值与其完成度成正比。

输入

测试数据包括多组。 每组测试数据以两个整数M,N(0≤M≤20, 0≤N≤10000,M,N不同时为0)开头,分别表示试卷的数目和I_Love_C剩下的时间。 接下来有M行,每行包括两个整数T,V(1≤T≤N,0<V<1000000),分别表示做完这张试卷所需的时间以及做完后能得到的价值! 输入以0 0结束。

输出

对应每组测试数据输出I_Love_C能获得的最大价值。

保留小数点2位

注意点:有可能不能完成整张卷子,而每张试卷的价值与其完成度成正比;

上码:

#include<stdio.h>
double arr[20]={},arrT[20]={}, arrV[20]={};
int main()
{
	while(1)
	{
		int a,b,i,j;
		double sumV=0,sumT=0,t;
		scanf("%d%d",&a,&b);
		if(a==0&&b==0)
		{
			break;
		}
		for(i=0;i<a;i++)
		{
			scanf("%lf%lf",&arrT[i],&arrV[i]);
			arr[i]=arrV[i]/arrT[i];
		}
		for(i=0;i<a;i++)
		{
			for(j=i+1;j<a;j++)
			{
				if(arr[i]<arr[j])
				{
					t=arr[i];arr[i]=arr[j];arr[j]=t;
					t=arrT[i];arrT[i]=arrT[j];arrT[j]=t;
					t=arrV[i];arrV[i]=arrV[j];arrV[j]=t; 
				}
			}
		}
//法1:逆向思维来进行V的总和,更加简洁明了方便迅速,不易出问题。 
		i=0;
		while (b>0 && i<a)
  		{
		 	if (b>=arrT[i])
 	  		{
 	  			b-=arrT[i];
 	  			sumV+=arrV[i];
 	  		}
 	  		else
 	  		{
 	  			sumV+=arr[i]*b;
 	  			b=0;
 	  		}
 	  		i++;
  		}
//法2:正向思维来进行V的总和	
  		for(i=0;sumT<=b&&arrT[i]!=0&&i<a;i++)//arrY[i]!=0不能作为限制条件,因为数组里面存的数不一定为0 
		{
			sumT+=arrT[i];
			if(sumT>b)
			{
				sumT-=arrT[i];
				Time=b-sumT;
				sumV+=Time*arr[i];
				break;//必须是break而不是continue,continue只是跳过进入下一次循环会导致出错 
			}
			sumV+=arrV[i];
		}
		printf("%.2lfn",sumV);
	}
	return 0;
}

最后

以上就是英勇黄豆为你收集整理的1001homework临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心!的全部内容,希望文章能够帮你解决1001homework临近开学了,大家都忙着收拾行李准备返校,但I_Love_C却不为此担心!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部