Skip to main content
Original142 words1 min

题解:P9240 [蓝桥杯 2023 省 B] 冶炼金属

Summary

每次记录用 a 个普通金属恰好造出 b 个特殊金属,求转换率 V 的可能取值范围。由 b+1 个时不再成立可知满足条件的最小 V 为 a 除以 b+1 下取整再加一,最大 V 为 a 除以 b 下取整;最终答案取所有记录的交集,即所有下界的最大值与所有上界的最小值。时间复杂度 O(n)。

解题思路​

当 bb 变成 b+1b+1,即再造一个特殊金属 X 时,V=⌊ab+1⌋V=\left\lfloor\frac{a}{b+1}\right\rfloor。此时为 恰好不满足条件的情况,因此 满足条件的最小情况 为:

Vmin⁡=⌊ab+1⌋+1V_{\min}=\left\lfloor\frac{a}{b+1}\right\rfloor+1

同理,满足条件的最大情况 为:

Vmax⁡=⌊ab⌋V_{\max}=\left\lfloor\frac{a}{b}\right\rfloor

最终答案为所有记录的交集,即所有 Vmin⁡V_{\min} 的 最大值 和 Vmax⁡V_{\max} 的 最小值。

参考代码​

292 Bcpp
#include <bits/stdc++.h>
using namespace std;

const int inf=0x3f3f3f3f;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
int mn=0,mx=inf;
while(n--)
{
int a,b;
cin>>a>>b;
mn=max(mn,a/(b+1)+1);
mx=min(mx,a/b);
}
cout<<mn<<' '<<mx<<'\n';
return 0;
}