(坑点!!!)给定n条过原点的直线和m条抛物线(y=ax^2+bx+c,a>0),对于每一条抛物线,是否存在一条直线与它没有交点,若有,输出直线斜率

题目

思路:

(坑点!!!)给定n条过原点的直线和m条抛物线(y=ax^2+bx+c,a>0),对于每一条抛物线,是否存在一条直线与它没有交点,若有,输出直线斜率_第1张图片

1、区间端点可能是小数的时候,不能直接利用加减1将 < 转化为 <=,例如,x < 1.5 不等价于 x <= 2.5

2、该题中k在(b - sqrt(4 * a * c), b + sqrt(4 * a * c) 中,注意是开区间,那么可以将左端点向上取整,右端点向下取整,即sqrt(4 * a * c)向下取整,计算出左右端点l,r,那么k在[l, r] 中(闭区间),如果4*a*c是平方数,那么l--, r++

3、最好把可能为小数的部分连同它的系数看成整体,若把4开根,那么sqrt(4 * a * c) == 2 * sqrt(a * c), 那么得再判断sqrt(a * c) 是不是 0.5结尾的,若是,那么2 * sqrt(a * c)还是整数

#include 
using namespace std;
#define int long long
#define pb push_back
#define fi first
#define se second
#define lson p << 1
#define rson p <

你可能感兴趣的:(codeforces,算法)