题解 | #采集灵石#

采集灵石

https://ac.nowcoder.com/acm/contest/65846/A

这是一道贪心题

首先我们知道进入每个岛都有门票,这就涉及到一个问题:有一些高收益的岛也对应着高门票,我们没有那么多灵石,我们就要先进入低门票的岛(赚灵石),所以我们要贪门票有些黑心岛,门票比产出灵石还高,这种岛就不能去。

有了思路,事情就很简单了。用结构体将门票和收入绑定起来,将门票排序,在再遍历符合要求的岛即可。

代码如下:

using namespace std;

const long long N=1e5+10;

struct jj{
	long long k,m;
}a[N];

bool cmp(jj a,jj b)
{
	return a.m<b.m;
}

int main(){
	long long n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].k>>a[i].m;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		if(k>=a[i].m&&a[i].k>a[i].m)k=k+a[i].k-a[i].m;
	}
	cout<<k;
	return 0;
}
全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务