信息
- ID
- 1552
- 时间
- 3000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
若所有比值 Ai/Bi 都相同,则 A 与 B 成正比例,对任意 X,两个点积也保持同号或同时为零,因此一定无解。
反之,只要找到两个下标 i,j 满足 AiBj>AjBi,令 Xi=Aj+Bj、Xj=−(Ai+Bi),其余位置为 0。此时两个点积分别为 AiBj−AjBi>0 与 BiAj−BjAi<0,而构造出的数绝对值至多为 2×105,必然满足范围限制。
扫描序列并将每个比值与第一个比值用交叉相乘比较;若始终相等就输出 No,否则根据交叉乘积的正负确定两个下标的先后,再按上述公式输出即可。
交叉乘积和点积计算使用 64 位整数,算法对每组数据的时间复杂度为 O(N),空间复杂度为 O(N)。