题解:AT_arc200_a 点积
zengziqvan
·
·
题解
前言
感谢此题使我逃离了 rating 掉 40+ 的噩梦!尽管最后还是掉分了。
题解
我们不妨先考虑 n=2 时的情况。
设序列中取出两对数为:
A_i,A_j\\
B_i,B_j
假设 A_i,B_i 的系数是 -x,A_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)