为什么不能用性价比排序后选择呢?
  • 板块CF3B Lorry
  • 楼主Love_Natsu
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/6/28 17:55
  • 上次更新2024/6/28 20:36:25
查看原帖
为什么不能用性价比排序后选择呢?
809371
Love_Natsu楼主2024/6/28 17:55

代码如下

#include <iostream>
#include <algorithm>
#define N 100005
using namespace std;
int n,v;
struct good{int w,v,id;}a[N];
bool cmp(good x,good y){
    if(x.v/x.w==y.v/y.w)return x.w>=y.w;
    return  x.v/x.w>y.v/y.w;
}
int q[N],bck,Asriel;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>v;
	for(int i=1;i<=n;i++){
		int t,p;
		cin>>t>>p;a[i]={t,p,i};
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		int t=a[i].w,p=a[i].v,id=a[i].id;
		if(t<=v)v-=t,q[++bck]=id,Asriel+=p;
	}
	cout<<Asriel<<"\n";
	sort(q+1,q+bck+1);
	for(int i=1;i<=bck;i++)cout<<q[i]<<" ";
	return 0;
}
2024/6/28 17:55
加载中...