2024年蓝桥杯小白赛 玩偶购买【算法赛】 题型:贪心

64 阅读1分钟

4.玩偶购买【算法赛】 - 蓝桥云课 (lanqiao.cn) image.png

思想

题目说的很明确了,优先给小乔买玩偶,因此贪心的先给小乔买即可。

code

#include<bits/stdc++.h>
using namespace std;
#define int long long

void solve()
{
	int n,x,y,a,b;cin>>n>>x>>y>>a>>b;
	
	//小乔可以购买的玩偶个数  =  柜子能放多少个玩偶 和 钱能买多少个玩偶中,取较小值 
	int v=min(b/x,n/y);   //因为不管是柜子不够装 还是 钱不够了 都不能再继续买玩偶了 
	
	if(v==0)  //因为题目规定小蓝能购买的数量要比小乔少一个,因此当小乔只能买0个玩偶时,小蓝只能买-1个玩偶 
	{
		cout<<"-1\n";
		return;
	}
	//剩余的钱
	int money=n-v*y;   //总钱数 - 小桥买玩偶花的钱 
	
	//小蓝可以购买的玩偶个数  = 柜子能放多少个玩偶 和 钱能买多少个玩偶中  小乔的玩偶数量-1 
	int v2=min({a/x,money/y,v-1});   //加个v-1,这样一定可以保证最后小蓝购买玩偶的个数是一定小于小乔购买玩偶的个数的
	 
	cout<<v+v2<<endl;
}   

signed main()
{
	cin.tie(nullptr)->sync_with_stdio(0);
	int t=1;cin>>t;
	while(t--)
	{
		solve();
	}
	
	return 0;
}

image.png