A6224 | 「HEOI2014」逻辑翻译
时间限制5s
内存限制64MB
通过 / 提交0/0
题目描述
在人类的神经系统中,每个信号都可以用 $-1$ 或 $+1$ 来表示。这些信号组合起来最后形成 了喜怒哀乐,酸甜苦辣,红黄绿蓝等各种各样的复杂信息。纳米探测科技的突破让生物学家可以测量大脑中特定区域的完整逻辑功能。然而超大数据的处理一直是令 H 教授头疼的问题。
假设一个逻辑单元接受 $N$ 个信号输入,并产生一个代表某种意义的实数值 $r$。那么总共可能的情况有 $2^N$ 种。
通过长时间的累积测量, H 教授可以准确地获得输入信号与 $r$ 的关系表:$f\colon \{-1,1\}^N \rightarrow \mathbb{R}$。
然而进一步研究发现,神经元的运算方式可以被建模为人们熟知的多项式。由于一个输入信号值的平方一定为 $1$,所以我们可以用不含幂的 $2^N$ 项的多项式来唯一表示任何一个逻辑 $f$。例如以下涉及两个信号$x_1, x_2$输入的逻辑 $f$:
<!-- BEGIN: Migrated markdown table -->
| | $x_1 = +1; x_2 = +1$ | $x_1 = +1; x_2 = -1$ | $x_1 = -1; x_2 = +1$ | $x_1 = -1; x_2 = -1$ |
|-|-|-|-|-|
| $f$ | $0$ | $1$ | $2$ | $3$ |
<!-- Migrated from original HTML table:
<table class="ui table">
<thead>
<tr><th> </th><th> $x_1 = +1; x_2 = +1$ </th><th> $x_1 = +1; x_2 = -1$ </th><th> $x_1 = -1; x_2 = +1$ </th><th> $x_1 = -1; x_2 = -1$ </th></tr>
</thead>
<tbody>
<tr><td> $f$ </td><td> $0$ </td><td> $1$ </td><td> $2$ </td><td> $3$ </td></tr>
</tbody>
</table>
-->
<!-- END: Migrated markdown table -->
可以写成 $f(x_1,x_2) = 1.5 - 0.5x_2 - x_1$。
研究一个逻辑单元的多项式形式对了解大脑工作十分有意义,于是小 M 决定帮 H 教授把测量出的逻辑关系表全部转换成多项式的形式。这么简单的工作一定难不倒编程能手小 M 的吧?
假设一个逻辑单元接受 $N$ 个信号输入,并产生一个代表某种意义的实数值 $r$。那么总共可能的情况有 $2^N$ 种。
通过长时间的累积测量, H 教授可以准确地获得输入信号与 $r$ 的关系表:$f\colon \{-1,1\}^N \rightarrow \mathbb{R}$。
然而进一步研究发现,神经元的运算方式可以被建模为人们熟知的多项式。由于一个输入信号值的平方一定为 $1$,所以我们可以用不含幂的 $2^N$ 项的多项式来唯一表示任何一个逻辑 $f$。例如以下涉及两个信号$x_1, x_2$输入的逻辑 $f$:
<!-- BEGIN: Migrated markdown table -->
| | $x_1 = +1; x_2 = +1$ | $x_1 = +1; x_2 = -1$ | $x_1 = -1; x_2 = +1$ | $x_1 = -1; x_2 = -1$ |
|-|-|-|-|-|
| $f$ | $0$ | $1$ | $2$ | $3$ |
<!-- Migrated from original HTML table:
<table class="ui table">
<thead>
<tr><th> </th><th> $x_1 = +1; x_2 = +1$ </th><th> $x_1 = +1; x_2 = -1$ </th><th> $x_1 = -1; x_2 = +1$ </th><th> $x_1 = -1; x_2 = -1$ </th></tr>
</thead>
<tbody>
<tr><td> $f$ </td><td> $0$ </td><td> $1$ </td><td> $2$ </td><td> $3$ </td></tr>
</tbody>
</table>
-->
<!-- END: Migrated markdown table -->
可以写成 $f(x_1,x_2) = 1.5 - 0.5x_2 - x_1$。
研究一个逻辑单元的多项式形式对了解大脑工作十分有意义,于是小 M 决定帮 H 教授把测量出的逻辑关系表全部转换成多项式的形式。这么简单的工作一定难不倒编程能手小 M 的吧?
输入格式
第一行是 $N$,
接下来共 $2^N$ 行,每一行是一组逻辑输入和一个对应值,代表 $x_1,\ldots,x_n$ 的符号,以及对应的 $r$。详见样例。数据保证所有逻辑值的绝对值不超过
$100$,且不包含超过 $2$ 位小数。保证所有逻辑的输入串都互不相同。
接下来共 $2^N$ 行,每一行是一组逻辑输入和一个对应值,代表 $x_1,\ldots,x_n$ 的符号,以及对应的 $r$。详见样例。数据保证所有逻辑值的绝对值不超过
$100$,且不包含超过 $2$ 位小数。保证所有逻辑的输入串都互不相同。
输出格式
最多 $2^N$ 行,代表多项式每一项的系数,如果答案为整数,输出整数形式。
否则输出最简分数形式。如果系数恰好为 $0$,则省略整行。
变量和系数用空格隔开,常数项不用加空格。
顺序按多项式的字典序:常数项优先;没有常数项时,$x$ 下标更小的项优先,当两项含有相同最小下标时,排除掉最小下标 $x$ 以后,以同样规则递归比较。
例如: $1,x_1,x_1x_2,x_1x_2x_3,x_1x_3,x_2,x_2x_3,x_3$。详见样例。
否则输出最简分数形式。如果系数恰好为 $0$,则省略整行。
变量和系数用空格隔开,常数项不用加空格。
顺序按多项式的字典序:常数项优先;没有常数项时,$x$ 下标更小的项优先,当两项含有相同最小下标时,排除掉最小下标 $x$ 以后,以同样规则递归比较。
例如: $1,x_1,x_1x_2,x_1x_2x_3,x_1x_3,x_2,x_2x_3,x_3$。详见样例。
输入输出样例
输入 #1
2 ++ 0 +- 1 -+ 2 -- 3
输出 #1
3/2 -1 x1 -1/2 x2
输入 #2
3 --- -1.0 -++ -1.0 +-+ -1.0 ++- -1.0 --+ 1.0 -+- 1.0 +-- 1.0 +++ 1.0
输出 #2
1 x1x2x3
对于 $100\%$ 的数据,$1 \leq N \leq 20,\ |r| \leq 100,\ 100r \in \mathbb{Z}$。
请注意输入输出的效率。
请注意输入输出的效率。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?