跳转至

作物解锁条件

  • 参考时间限制:0.5 秒(参考环境:R30;仅供预估)
  • 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间乘以 2,再按 0.5 秒向上取整。
  • 内存限制:128 MB

背景故事

一款农业游戏扩展提供基础作物与衍生作物。衍生作物的配方可能依赖其他配方,甚至形成环。你要找出从现有基础作物出发,最终真正能够获得哪些作物。

形式化问题描述

共有 \(N+M\) 种作物,编号 \(1,\ldots,N+M\) .最初仅前 \(N\) 种已获得。后 \(M\) 种各有一个条件表达式,包含作物编号、逻辑与 && 、逻辑或 || 和圆括号。

编号的值表示对应作物是否已经获得。逻辑与的优先级高于逻辑或,同级运算从左到右;括号优先。允许在记号之间出现空格或制表符;一个整数或一个双字符运算符内部没有空白,整数没有前导零。

重复应用以下规则:若某种未获得作物的条件为真,就获得它。已经获得的作物永远保留。直到再也没有新作物能够获得。只由未获得作物互相依赖形成的环不会自行解锁;条件中的重复编号按普通逻辑运算解释。请判断每种衍生作物最终能否获得。

输入格式

第一行两个整数 \(N,M\) .随后恰好 \(M\) 行,第 \(i\) 行是编号 \(N+i\) 的条件表达式。每个表达式至少包含一个编号,且语法合法。

输出格式

输出 \(M\) 行。第 \(i\) 行在作物 \(N+i\) 最终可获得时输出 1 ,否则输出 0 .若 \(M=0\) 则不输出任何行。

样例 1

输入

1 5
3 || 1
2 && 2
5
4
2 || 4 && 5

输出

1
1
0
0
1

解释

作物二由基础作物一解锁,随后解锁三和六;四和五互相等待。

箭头展示一条实际解锁过程及四、五之间未启动的环;结点下方数字表示最终可用状态。图中未画出全部条件引用。

箭头展示一条实际解锁过程及四、五之间未启动的环;结点下方数字表示最终可用状态。图中未画出全部条件引用。

样例 2

输入

0 2
2
1

输出

0
0

解释

没有基础作物,二者的依赖环不能自行解锁。

样例 3

输入

2 2
1||3&&2
3&&3

输出

1
1

解释

与优先于或,因此作物三的条件为 \(1\lor(3\land2)\) ,基础作物一足以解锁它,随后也能获得四。

数据范围与保证

\(N,M\ge0\) ,\(1\le N+M\le2\times10^5\) .所有表达式长度之和 \(S\le10^6\) ,长度包含空格和制表符,不包含行尾换行。表达式中的编号都在 \([1,N+M]\) 中。

数据规格由 Codex(GPT-6)补齐:确定逐行表达式格式、输入规模、最初仅基础作物可用的递推语义、空集合边界与测试分组。

数据分组

分值比例 额外条件
20% \(N+M\le20,\ S\le1000\)
30% \(N+M\le1000,\ S\le10000\)
50% 无额外条件

参考评测环境与测量