P17845 修改向量

题目描述

猫猫的队友由于沉迷百合小说,直到线性代数期末考试临近,才意识到自己甚至还没有翻开过课本。 在连续复习了一个通宵后,她终于支撑不住,沉沉睡去。在梦中,她见到了家里的两只小狗皮皮和小奥。它们分别捧着一个向量,向她提出了一道线性代数问题... :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/wsq0io31.webp) 皮皮和小奥(躺在床上的是皮皮) ::: 在 $k$ 维欧氏空间 $\mathbb{R}^k$ 中,皮皮手中有一个向量 $$ A=(A_1,A_2,\ldots,A_k). $$ 小奥手中有一个向量 $$ B=(B_1,B_2,\ldots,B_k). $$ 现在,两只小狗希望猫猫的队友通过若干次操作修改向量 $B$,使得修改后的向量 $B$ 与向量 $A$ 垂直$^{1}$。 一次操作可以选择两个此前从未被修改过的不同位置 $i,j$,并选择一个满足 $|x|\le m$ 的**实数** $x$,随后令 $$ B_i\leftarrow B_i-x, $$ $$ B_j\leftarrow B_j+x. $$ 请你帮助她求出,至少需要进行多少次操作,才能使修改后的向量 $B$ 与向量 $A$ 垂直。 $^{1}$ 在 $k$ 维欧氏空间 $\mathbb{R}^k$ 中,两个向量 $A$ 和 $B$ 相互垂直的充要条件是它们的点积为 $0$,即 $\sum \limits_{i=1}^{k} A_iB_i=0$。

输入格式

第一行两个整数 $k$($1 \leq k \leq 2 \times 10^5$)和 $m$($0 \leq m \leq 10^6$),分别表示向量的维数和能操作的绝对值上限。 第二行 $k$ 个整数 $A_i$($|A_i| \leq 10^6$),表示向量 $A$。 第三行 $k$ 个整数 $B_i$($|B_i| \leq 10^6$),表示向量 $B$。

输出格式

输出一个整数,表示使向量 $A$ 与修改后的向量 $B$ 垂直所需要的最少操作次数。 如果无法做到,请输出 $-1$。

说明/提示

对于样例一: 可以选择 $i=1,j=2,x=-2$,操作后向量 $B=(3,-1,1)$。 此时向量 $B$ 与 $A$ 垂直。