社区讨论

0pts求助必关

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mk85mmk9
此快照首次捕获于
2026/01/10 18:20
上个月
此快照最后确认于
2026/01/13 18:35
上个月
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long n,t;
double m=0;
struct str{
    int m;
    int u;
    double jg;
}a[200];
int main(){
    cin>>n>>t;
    for(int i=0;i<n;i++){
        cin>>a[i].m>>a[i].u;
        a[i].jg=a[i].u/a[i].m;
    }
    while(t!=0){
        int maxb=0;
    	for(int i=1;i<n;i++){
    		if(a[i].jg>a[i-1].jg){
    			maxb=i;
			}
		}
		if(a[maxb].m<=t){
			m+=a[maxb].u;
			t-=a[maxb].m;
			a[maxb].u=0;
			a[maxb].m=0;
			a[maxb].jg=0;
		}else{
			a[maxb].u=(m-t)*a[maxb].jg;
			a[maxb].m=m-t;
			m+=a[maxb].jg*t;
			t=0;
			a[maxb].jg=a[maxb].u/a[maxb].m;
		}
	}
	printf("%.2lf\n",m);
	return 0;
}

回复

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

正在加载回复...