test20191211

被虐了.

$Polynomial$

把 $A=1,A>B,B>C​$ 的情况判掉,剩下的情况用 exgcd 暴搜就可以了.

$Password$

打表可以发现,对于任意 $i\ge 1$ ,都有第 $i+1$ 行和第 $i+3$ 行完全相同.

于是只需要维护前 $3$ 行的信息.

分块,维护前 $i$ 个块中, $j$ 一共出现了几次,前缀出现次数为 $j$ 的位置有几个,分别去更新第 $2$ 行,第 $3$ 行的答案.

$Proposition$

每次询问时,枚举所有变量的取值以及 $Q$ 的取值,用一个栈去模拟公式 $P$ 的计算.

可以得出对于每组变量的取值,为使 $P$ 为真, $Q$ 需要为真/假/都可以.

设 $f(i,S,0/1)$ 表示用了 $i$ 个符号,变量的取值状态为 $S$ , $Q$ 为 $0/1$ 时的方案数.

注意到 $a\to b=\lnot a\lor b$ ,所以转移是一个 or 卷积的形式,用 $FWT$ 优化.