luogu#P9931. [NFLSPC #6] 挑战停机问题

[NFLSPC #6] 挑战停机问题

题目背景

作为新时代的 OIer/XCPCer,你已经不满足于挑战 NPC 问题了。你想挑战数学的不可判定性——图灵停机问题。

题目描述

图灵给了你一个程序。程序开始运行之初,有且仅有一个变量 AA,初始值为 00。程序共有 nn 行,行号为 1n1 \sim n,每行是如下几种形式之一:

  • A a:令 AA+aA \gets A + a,然后执行下一行。
  • G x:执行第 xx 行。
  • I l r x y:如果 A[l,r]A \in [l, r] 则执行第 xx 行,否则执行第 yy 行。
  • E:直接结束程序。

保证最后一行是 E

图灵希望你判断这个程序从第一行开始执行会不会结束。为了进一步检验你到底是不是真的会判定停机问题(还是装的?),图灵还要求你给出 AA 最终的值,如果程序不会结束且不存在一个时刻使得在其以后 AA 不再变化,则输出 @Turing ?

输入格式

本题多测。第一行一个正整数 TT 表示数据组数,对于每组数据:

  • 第一行一个整数 nn,表示程序的行数。
  • 接下来 nn 行,描述程序。

输出格式

对于每个询问,输出两行:

  • 第一行一个字符串 YesNo,表示程序是否会结束。
  • 第二行一个整数 A0A_{0} 或字符串 @Turing ?,表示 AA 最终的值。
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

No
2
Yes
3
No
@Turing ?

提示

对于所有数据,1T10001 \leq T \leq 10001n,n1051 \leq n, \sum n \leq 10^51a1091 \leq a \leq 10^90lr1090 \leq l \leq r \leq 10^91x,yn1 \leq x, y \leq n。保证输入涉及到的所有数字都是整数。

  • 子任务 1(15 分):不存在 I 类语句。
  • 子任务 2(20 分):r100r \leq 100
  • 子任务 3(40 分):maxr105\sum \max r \leq 10^5
  • 子任务 4(25 分):无特殊限制。

Source:NFLSPC #6 G by chenxia25