[NFLSPC #6] 挑战停机问题
题目背景
作为新时代的 OIer/XCPCer,你已经不满足于挑战 NPC 问题了。你想挑战数学的不可判定性——图灵停机问题。
题目描述
图灵给了你一个程序。程序开始运行之初,有且仅有一个变量 $A$,初始值为 $0$。程序共有 $n$ 行,行号为 $1 \sim n$,每行是如下几种形式之一:
- `A a`:令 $A \gets A + a$,然后执行下一行。
- `G x`:执行第 $x$ 行。
- `I l r x y`:如果 $A \in [l, r]$ 则执行第 $x$ 行,否则执行第 $y$ 行。
- `E`:直接结束程序。
保证最后一行是 `E`。
图灵希望你判断这个程序从第一行开始执行会不会结束。为了进一步检验你到底是不是真的会判定停机问题(还是装的?),图灵还要求你给出 $A$ 最终的值,如果程序不会结束且不存在一个时刻使得在其以后 $A$ 不再变化,则输出 `@Turing ?`。
输入输出格式
输入格式
本题多测。第一行一个正整数 $T$ 表示数据组数,对于每组数据:
- 第一行一个整数 $n$,表示程序的行数。
- 接下来 $n$ 行,描述程序。
输出格式
对于每个询问,输出两行:
- 第一行一个字符串 `Yes` 或 `No`,表示程序是否会结束。
- 第二行一个整数 $A_{0}$ 或字符串 `@Turing ?`,表示 $A$ 最终的值。
输入输出样例
输入样例 #1
3
5
I 1 7 1 3
G 4
A 2
G 2
E
6
A 2
I 2 3 5 1
E
G 4
A 1
E
4
A 1
G 1
E
E
输出样例 #1
No
2
Yes
3
No
@Turing ?
说明
对于所有数据,$1 \leq T \leq 1000$,$1 \leq n, \sum n \leq 10^5$,$1 \leq a \leq 10^9$,$0 \leq l \leq r \leq 10^9$,$1 \leq x, y \leq n$。保证输入涉及到的所有数字都是整数。
- 子任务 1(15 分):不存在 `I` 类语句。
- 子任务 2(20 分):$r \leq 100$。
- 子任务 3(40 分):$\sum \max r \leq 10^5$。
- 子任务 4(25 分):无特殊限制。
Source:NFLSPC #6 G by chenxia25