本文主要是介绍[蓝桥杯 2023 省 B] 冶炼金属,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
===============================================================
参考题解:
#C++3150——蓝桥杯2023年第十四届省赛真题-冶炼金属(分块)-Dotcpp编程社区
https://www.bilibili.com/video/BV1wc411x7KU/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=775316543df455e17016d86856ed432d
================================================================
对第一种解法做一个备忘的笔记:
关于一个记录的最大v和最小v,即
int max=a/b,min=a/(b+1);
//对于max这个式子,求出的max肯定是合法的,max如果再大1,a不变(普通金属总量不变)那么b肯定变小,就不能冶炼出那么多金属,就不合法了;而min是除以原有冶炼数量+1,得到一个数,这个数肯定是不合法的,但是可以看成是这个冶炼数量(原有冶炼数量+1)的最大v,所以再加上1就是原有冶炼数量的最小值 。
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){int n;cin>>n;int a,b;cin>>a>>b;int max=a/b,min=a/(b+1);//max如果再大,a不变那么b肯定变小,就不能冶炼出那么多金属,就不合法了;而min是除以原有冶炼数量+1,得到一个数,//这个数肯定是不合法的,但是是这个冶炼数量的最大v,所以再加上1就是原有冶炼数量的最小值 n--;while(n--){cin>>a>>b;if(max>a/b) max=a/b;if(min<a/(b+1)) min=a/(b+1);}cout<<min+1<<" "<<max;return 0;
}
这篇关于[蓝桥杯 2023 省 B] 冶炼金属的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!