#B3774. [信息与未来 2022] 样本分类

[信息与未来 2022] 样本分类

题目描述

在人工智能中,“分类”是一项非常重要的任务。例如,公安系统通过人工智能分类潜在的电信诈骗,并进行及时的预警。现在我们考虑一种最简单的“线性二分类器”,它由 nn 个整数参数(常数)a1,a2,,ana_1,a_2,\cdots,a_n 组成。在输入一组整数 x1,x2,,xnx_1,x_2,\cdots,x_n 时,如果

$$a_1\cdot x_1+a_2\cdot x_2+\dots+a_n\cdot x_n\leq 0 $$

成立,则分类器输出 true\texttt{true},否则分类器输出 false\texttt{false}。如果分类器的输入(称为“特征”)选择得当,即便是简单的线性分类器也能取得很好的分类效果。

现在,我们得到了两个用于同一分类任务的分类器:

  • 分类器 AA,当 $a_1\cdot x_1+a_2\cdot x_2+\dots +a_n\cdot x_n\leq 0$ 时输出 true\texttt{true},否则输出 false\texttt{false}
  • 分类器 BB,当 $b_1\cdot x_1+b_2\cdot x_2+\dots +b_n\cdot x_n\leq 0$ 时输出 true\texttt{true},否则输出 false\texttt{false}

由于 AABB 是两个不同的分类器,它们可能会在某些输入的 xx 上产生分歧,给出不同的分类结果——这样的问题值得我们特别关注。因此,你的任务就是求出一组 x1,x2,,xnx_1,x_2,\cdots,x_n,使得分类器 AABB 返回不同的结果。

为了帮助大家理解,我们假设 aia_ibib_i 分别保存在数组 a\text{a}b\text{b} 中(数组下标从 11nn)。你的任务就是求出数组 x\text{x} 的元素 x[1],x[2],,x[n]\texttt{x[1]},\texttt{x[2]},\cdots,\texttt{x[n]},使下面的函数 diverge\texttt{diverge} 返回 true\texttt{true}

int n; // 参数/输⼊的个数
bool classify(int param[], int x[]) {
 int y = 0;
 for (int i = 1; i <= n; i++) {
 y += param[i] * x[i];
 }
 if (y <= 0) {
 return true;
 } else {
 return false;
 }
}
bool diverge(int x[]) {
 return classify(a, x) != classify(b, x);
}

输入格式

输入的第一行包含一个整数 nn,代表分类器参数的个数。

输入的第二行包含 nn 个整数,代表分类器 AA 的参数 aia_i1in1\le i\le n)。

输入的第三行包含 nn 个整数,代表分类器 BB 的参数 bib_i1in1\le i\le n)。

输入数据保证两个分类器的参数不是完全相同的

传题人 Update:本题保证两个分类器的参数不对应成比例且同号,即所有 aibi\dfrac{a_i}{b_i} 不全为同一正值,可以证明这种情况下一定有解。

输出格式

输出一行 nn 个整数,分别是 x1,x2,,xnx_1,x_2,\cdots,x_n。其中 xix_i1in1\leq i\leq n)可以是正数、负数或零,但绝对值不能超过 10,00010,000。如果有多组满足要求的解,输出任意一个即可。

2
1 1
-1 1
100 0

提示

对于 100%100\% 的数据,满足 1n1,0001\le n\le 1,000100ai,bi100-100\le a_i,b_i\le 1001in1\le i\le n)。