题解:AT_arc200_a 点积

· · 题解

前言

感谢此题使我逃离了 rating 掉 40+ 的噩梦!尽管最后还是掉分了。

题解

我们不妨先考虑 n=2 时的情况。

设序列中取出两对数为:

A_i,A_j\\ B_i,B_j

假设 A_i,B_i 的系数是 -xA_j,B_j 的系数为 y

显然 x,y>0(系数必定一正一负)

对于 A

y\times A_j-x\times A_i>0\\ \frac{A_j}{A_i}>\frac{x}{y}

对于 B

y\times B_j-x\times B_i<0\\ \frac{B_j}{B_i}<\frac{x}{y}

即:

\frac{B_j}{B_i}<\frac{x}{y}<\frac{A_j}{A_i}

引理

a,b,c,d>0,\frac{a}{b}<\frac{c}{d}\Rightarrow \frac{a}{b}<\frac{a+c}{b+d}<\frac{c}{d}

证明:

证左半部分,右半部分同理。

\begin{aligned} &\frac{a}{b}<\frac{c}{d}\\ \Rightarrow &ad-bc<0\\ \Rightarrow &ab+ad-ab-bc<0\\ \Rightarrow &a(b+d)-b(a+c)<0\\ \Rightarrow &\frac{a(b+d)-b(a+c)}{b(b+d)}<0\\ \Rightarrow &\frac{a}{b}-\frac{a+c}{b+d}<0\\ \Rightarrow &\frac{a}{b}<\frac{a+c}{b+d} \end{aligned}

回到不等式:

\frac{B_j}{B_i}<\frac{x}{y}<\frac{A_j}{A_i}

根据引理,显然可以令 x\gets A_j+B_j,y\gets A_i+B_i

又有 A_i,B_i\le 10^5,故上述构造一定可以满足系数范围。

接着考虑 n>2 时的情况:

注意到我们只需要找到一对满足 $ \frac{B_j}{B_i}<\frac{A_j}{A_i}

直接做有点麻烦,考虑化式子。 $$ \frac{B_j}{B_i}<\frac{A_j}{A_i} \Rightarrow \frac{A_i}{B_i}<\frac{A_j}{B_j} $$ 故如果所有 $\frac{A_i}{B_i}=\frac{A_j}{B_j}$ 则无解。 否则找到一对 $i,j$ 满足 $\frac{A_i}{B_i}<\frac{A_j}{B_j}$ 按上述方法构造即可。 [代码](https://atcoder.jp/contests/arc200/submissions/66807730)