社区讨论

大佬求助?为什么我样例过了,但全错?

P2240【深基12.例1】部分背包问题参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lqezscr6
此快照首次捕获于
2023/12/21 17:20
2 年前
此快照最后确认于
2023/12/21 20:24
2 年前
查看原帖
CPP
#include<stdio.h>

struct node{

    double w;
    
    double v; 
    
    double p;
    
}arr[105];

int main(){

	int n=0,t=0,m=0,q=0,z=0;
    
	double sum1=0,sum2=0;
    
	struct node brr[105];
    
	scanf("%d %d\n",&n,&t);
    
	for(int i=0;i<n;i++)
    
	 scanf("%lf %lf\n",&arr[i].w,&arr[i].v);
     
	while(m<n){
    
		arr[m].p=arr[m].v/arr[m].w;
        
		m++;
        
	}
    
	for(int i=0;i<n;i++){
    
		for(int j=0;j<n-1-i;j++){
        
			if(arr[j].p>arr[j+1].p){
           
			    brr[j]=arr[j];
                
				arr[j]=arr[j+1];
                
				arr[j+1]=brr[j];
                }	
                
		}
        
	}
    
	for(int i=n-1;i>=0;i--){
		sum1+=arr[i].w;
		if(sum1>t){
			q=sum1-t;
			z=arr[i].w-q;
			arr[i].w=z;
			sum2+=arr[i].p*arr[i].w;
			break;
		}
        
		sum2+=arr[i].p*arr[i].w;
	}
    
	printf("%.2lf\n",sum2);
    
	return 0;
    
}

回复

1 条回复,欢迎继续交流。

正在加载回复...