为了备战蓝桥杯,一个算法小白写的关于金属冶炼的代码,如果有不对的地方,希望大家指出
看到这里,我们梳理一下,要求v=A[i]/B[i],求这里v的范围,首先我们想到的肯定是暴力枚举,我们下面来试一下,注意这里的范围,为了防止超时,我们在这里把N范围设置低一些
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e4+10;
int A[N],B[N];
bool flag;
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>A[i]>>B[i];
for(int i=1;i<=1e6;i++)//v的转化率
{
flag=true;
for(int j=1;j<=n;j++)
{
if(B[j]!=A[j]/i)
{
flag=false;
break;
}
}
if(flag)
{
cout<<i<<" ";
break;//一旦有,就break掉
}//从小到大,第一次枚举到的是最小值 //这个一定要放在里面循环的外面
}
for(int i=1e6;i>=1;i--)
{
flag=true;
for(int j=1;j<=n;j++)
{
if(B[j]!=A[j]/i)
{
flag=false;
break;
}
}
if(flag)
{
cout<<i<<" ";
break;//一旦有,就break掉
}//从大到小,第一次枚举到的是最大值
}
}
这里虽然过了,但是不推荐使用这种算法,在比赛一般得不了满分
推荐使用二分,如有人对二分不理解,可看看我的博客对于二分代码的模板解释
二分代码明天发,今天好累