1 条题解

  • 0
    @ 2025-2-14 21:11:41

    C :

    #include <stdio.h>
    #include<string.h>
    #include<math.h>
    #define maxn 100
    int main()
    {
    	int c, n, i, j;
    	double v = 0, w = 0, tmp = 0;
    	double y = 0, ar[maxn];
    	memset(ar, 0, sizeof(ar));
    	scanf("%d", &c);
    	while (c)
    	{
    		i = 0;
    		scanf("%d %lf %lf", &n, &v, &w);
    		while (i<n)
    		{
    			scanf("%lf", &ar[i]);
    			i++;
    		}
    		for (i = 0; i<n; i++)
    		{
    			for (j = 0; j<n; j++)
    			{
    				if (ar[i]<ar[j])
    				{
    					int t = ar[j];
    					ar[j] = ar[i];
    					ar[i] = t;
    				}
    			}
    		}
    		j = 0;
    		for (i = 0; i<n;i++)
    		{
    			tmp = ar[i] * v;
    			if ((y + tmp) / (double)(v*(i + 1)) <= w)
    			{
    				y = y + tmp;
    				j++;
    			}
    			else
    			{
    				break;
    			}
    		}
    		if (j==0)
    		{
    			y = 0;
    		}
    		else
    		{
    		   y = y / (v*j);
    		   int p = y;
    		   if (y-(double)p>=0.5)
    		   {
    			  y += 0.5;
    		   }
    		}
    
    		printf("%d %.2f\n", (int)(v*j),y / 100.0);
    		y = 0.0;
    		c--;
    	}
    	return 0;
    }
    
    

    C++ :

    #include<stdio.h>
    #include<stdlib.h>
    
    int cmp(const void *a,const void *b){
    	return *((int*)a)-*((int*)b);
    }
    
    int main(){
    	int i,n,v,w,cnt;
    	double now;
    	int as[109],cas;
    	scanf("%d",&cas);
    	while( cas-- ){
    		scanf("%d%d%d",&n,&v,&w);
    		now=0;
    		cnt=0;
    		for( i=0; i<n; i++ )
    			scanf("%d",as+i);
    		qsort(as,n,sizeof(as[0]),cmp);
    		for( i=0; i<n; i++ ){
    			if( now+as[i] > (cnt+1)*w )
    				break;
    			else
    				now+=as[i],cnt++;
    		}
    		if( cnt )
    		now=now/cnt/100;
    		printf("%d %.2lf\n",cnt*v,now);
    	}
    	return 0;
    }
    

    Java :

    
    import java.text.DecimalFormat;
    import java.util.Arrays;
    import java.util.Scanner;
    
    
    class Main {
    	
    	private static Scanner scan=new Scanner(System.in);
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		int num=scan.nextInt();
    		double[][] values=new double[num][2];
    		for (int i = 0; i < num; i++) 
    		{
    			int n=scan.nextInt();
    			int V=scan.nextInt();
    			int W=scan.nextInt();
    			int[] Pi=new int[n];
    			for (int j = 0; j < n; j++) 
    			{
    				Pi[j]=scan.nextInt();
    			}
    			Arrays.sort(Pi);
    			if(Pi[0]>W)
    			{
    				values[i][0]=0;
    				values[i][1]=0.00;
    			}
    			else if(n==1)
    			{
    				values[i][0]=V;
    				values[i][1]=(double)Pi[0]/100;
    			}
    			else
    			{
    				double result=0.00;
    				int count=0;
    				for (int j = 0; j < n; j++) 
    				{
    					if((result + Pi[j]) <= (W * (j + 1)))
    					{
    						result+=Pi[j];
    						count++;
    					}
    					else 
    					{
    						break;
    					}
    				}
    				values[i][0]=V*count;
    				values[i][1]=result/(count*100);
    			}
    		}
    		DecimalFormat df=new DecimalFormat("0.00");
    		for (int i = 0; i < num; i++)
    		{
    			String s=df.format(values[i][1]);
    			System.out.println((int)values[i][0]+" "+s);
    		}
    	}
    
    }
    
    • 1

    信息

    ID
    681
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者