刚刚学C++,有很多地方不会,第二个点WA了,求帮助,谢谢!
查看原帖
刚刚学C++,有很多地方不会,第二个点WA了,求帮助,谢谢!
143291
真香警告AQA楼主2020/6/11 18:08

不太清楚是特殊点没考虑到,还是本身算法有错误。求各位前辈帮忙看一看,谢谢!

#include<bits/stdc++.h>
using namespace std;
struct medicine{
	int t,m;
}x[10008];
bool cmp(medicine a,medicine b){
	return a.t*b.m<a.m*b.t;
}
int main(){
	long long t,m;
	long  ans;
	cin>>t>>m;
	for(int i=1;i<=m;i++)	cin>>x[i].t>>x[i].m;
	sort(x+1,x+1+m,cmp);
	
//	for(int i=1;i<=m;i++)	cout<<x[i].t<<" "<<x[i].m<<endl;
//	cout<<endl;
	
	for(int i=1;i<=m;){
		if(x[i].t<=t){
			ans+=x[i].m;
			t-=x[i].t;
		}
		else
		{
			i++;
		}
	}
	cout<<ans;
}
2020/6/11 18:08
加载中...