P9240 关于求交集和临界值问题
题目如下:
限定条件:
思路:对于这种题,一开始是没思路的,因为不知道怎么处理临界值问题,,除数求余也没想到较好的处理方法,同时对于题目要考的点也不明确,所以此题对我来说无解。
简单提一下我觉得的难点在于临界值问题的处理哪里,因为大佬给的我才开始着实没看太懂,后来又看了好几遍,才顿悟了,太牛逼了。
本题考查的主要是求交集问题以及最大值的最小值问题和最小值的最大值问题(一般出现这种情况二分法也可以试试,但是这题用二分法太繁琐了),所以可以借助求最大值和最小值的函数和一个循环速解该题;注意最大值和最小值的设定不能和最大值和最小值函数产生冲突,否则,哈哈,你试试看。
题目代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,a,b;
int min_1=-1e9,max_1=1e9;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a>>b;
min_1=max(min_1,(int)floor(a/(b+1)+1));
max_1=min(max_1,(int)floor(a/b));
}
cout<<min_1<<' '<<max_1;
return 0;
}