社区讨论
大佬求助?为什么我样例过了,但全错?
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 条回复,欢迎继续交流。
正在加载回复...