Java就第二个点WA了,死活看不出来,谢谢大佬们!!!!!
查看原帖
Java就第二个点WA了,死活看不出来,谢谢大佬们!!!!!
819614
xubai66楼主2022/11/10 16:46
import java.util.Arrays;
import java.util.Scanner;
import java.util.*;
public class P2240 {
	 public static void main(String[] args) {
		   Scanner in=new Scanner(System.in);
			int n=in.nextInt();
			double price=0;
			double sum=0;
			int jug=0;
			double a[][]=new double [n][2];
			double b[]=new double[n];
			double t=in.nextInt();
			for(int i=0;i<n;i++)
			{
				a[i][0]=in.nextDouble();//重量
				a[i][1]=in.nextDouble();//价值
			    b[i]=a[i][1]/a[i][0];//这个表示第i组的单位价格
			}
	      Arrays.sort(b);
	      Out:
	      for(int i=b.length-1;i>=0;i--)//从性价比高的开始拿
	      {
	    	  for(int k=0;k<a.length;k++)//分析哪些性价比和当前最高的一样
	    	  {
	    		  if(a[k][1]/a[k][0]==b[i])//如果一样
	    		  {
	    			  sum=sum+a[k][0];
	    			  price=price+a[k][1];
	    		     if(sum==t)
	    		     {
	    		    	 break Out;
	    		     }
	    			 while(sum>t)//如果大于最大容量那么只能尽可能少拿刚好到背包容量最好咯
	    		     {
	    				 double cha=sum-t;
	    		    	sum=t;//减单位质量
	    		    	price=price-cha*(a[k][1]/a[k][0]);//减单位价值
	    		    	jug=1;	    	
	    		     }
	    		    if(jug==1)
	    		    {
	    		    	break Out;
	    		    } 
	    		  }   	     
	    	  }
	      }
	 System.out.printf("%.2f",price);
	 }
		}
2022/11/10 16:46
加载中...