建议加强数据
查看原帖
建议加强数据
998158
fire_hmz楼主2024/8/21 16:26

数据太水了,我亻为做法都过了:

#include<bits/stdc++.h>
using  namespace std;
struct node{
	double score;
	double cost;
}a[300];
bool cmp(node x,node y){
	return x.score/x.cost>y.score/y.cost;
}
int dp[1000005];
int main(){
	int n;
	double  m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].cost>>a[i].score;
		a[i].score*=1000.0;
	}
	sort(a+1,a+n+1,cmp);
	double mx_sc=0,mx_co=1;
	for(int i=1;i<=n;i++){
		for(int j=1000000;j>=a[i].cost;j--){
			if(dp[j-(int)a[i].cost]||j==a[i].cost){
				dp[j]=max(dp[j],dp[j-(int)a[i].cost]+(int)a[i].score);
				if((double)dp[j]/(double)j>mx_sc/mx_co&&j>=m){
					mx_sc=dp[j];
					mx_co=j;
				}
			}
		}
	}
	printf("%.0lf",floor(mx_sc/mx_co));
	
}

如果所有的 WiW_i 都为 1e61e6 ,那么卡一下我代码就挂了

2024/8/21 16:26
加载中...