巧妙的构造.
若第 $i$ 个数之前的运算符号是 or ,就将这个位置记作 0, 否则记作 1.
依次连接可以得到一个二进制数 $x$ ,规定第 $n$ 个运算符号对应的数为最高位.
对于第 $i$ 列的所有数,也可以顺次连接得到一个二进制数 $b_i$ ,规定第 $n$ 行的那个数为最高位.
于是可以发现运算结果第 $i$ 位为 1, 当且仅当 $b_i<x$ .
先将所有 $b_i$ 排个序,得到它们的大小关系.
对于每个询问,找出 1 的那些位上最小的 $b_i$ ,找出 0 那些位上最大的 $b_i$ ,即可算出方案数.
1 | //%std |