33OJ
登录 注册

#P17845. 修改向量

    ID: 20521 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>贪心上海O2优化排序2026高校校赛

修改向量

题目描述

猫猫的队友由于沉迷百合小说,直到线性代数期末考试临近,才意识到自己甚至还没有翻开过课本。

在连续复习了一个通宵后,她终于支撑不住,沉沉睡去。在梦中,她见到了家里的两只小狗皮皮和小奥。它们分别捧着一个向量,向她提出了一道线性代数问题...

:::align{center}

皮皮和小奥(躺在床上的是皮皮) :::

在 kk 维欧氏空间 Rk\mathbb{R}^k 中,皮皮手中有一个向量

A=(A1,A2,…,Ak).A=(A_1,A_2,\ldots,A_k).

小奥手中有一个向量

B=(B1,B2,…,Bk).B=(B_1,B_2,\ldots,B_k).

现在,两只小狗希望猫猫的队友通过若干次操作修改向量 BB,使得修改后的向量 BB 与向量 AA 垂直1^{1}。

一次操作可以选择两个此前从未被修改过的不同位置 i,ji,j,并选择一个满足 ∣x∣≤m|x|\le m 的实数 xx,随后令

Bi←Bi−x,B_i\leftarrow B_i-x, Bj←Bj+x.B_j\leftarrow B_j+x.

请你帮助她求出,至少需要进行多少次操作,才能使修改后的向量 BB 与向量 AA 垂直。

1^{1} 在 kk 维欧氏空间 Rk\mathbb{R}^k 中,两个向量 AA 和 BB 相互垂直的充要条件是它们的点积为 00,即 ∑i=1kAiBi=0\sum \limits_{i=1}^{k} A_iB_i=0。

输入格式

第一行两个整数 kk(1≤k≤2×1051 \leq k \leq 2 \times 10^5)和 mm(0≤m≤1060 \leq m \leq 10^6),分别表示向量的维数和能操作的绝对值上限。

第二行 kk 个整数 AiA_i(∣Ai∣≤106|A_i| \leq 10^6),表示向量 AA。

第三行 kk 个整数 BiB_i(∣Bi∣≤106|B_i| \leq 10^6),表示向量 BB。

输出格式

输出一个整数,表示使向量 AA 与修改后的向量 BB 垂直所需要的最少操作次数。

如果无法做到,请输出 −1-1。

3 2
1 2 -1
1 1 1
1
5 1
2 2 2 2 2
-2 3 -2 1 2
-1

提示

对于样例一:

可以选择 i=1,j=2,x=−2i=1,j=2,x=-2,操作后向量 B=(3,−1,1)B=(3,-1,1)。

此时向量 BB 与 AA 垂直。