#P16796. [NWRRC 2025]Asynchronous Processor
[NWRRC 2025]Asynchronous Processor
题目描述
给定一个由 条指令组成的程序。程序在一个处理器上执行,处理器只有一个整数寄存器 ,其初始值为 。
每条指令属于以下两种类型之一:
+ v:执行 ;= v:执行 。
这些指令从 到 编号。最初,第 条指令的时间戳为 。
部分指令被标记为异步指令。如果第 条指令是异步指令,那么可以将它的时间戳修改为任意一个严格大于 的实数。
完成所有时间戳调整后,所有指令的时间戳必须互不相同。处理器随后按照时间戳从小到大的顺序执行所有指令。
请计算:通过不同的异步指令时间戳安排,程序执行结束后,寄存器 一共可能得到多少种不同的最终值。
输入格式
第一行包含一个整数 ,表示程序中的指令数量。
接下来 行,第 行描述第 条指令,包含三个字段:
- 第一个字段为
+或=,表示指令类型; - 第二个字段为整数 ,表示指令参数;
- 第三个字段为
async或sync,表示该指令是异步指令还是同步指令。
输出格式
输出一个整数,表示执行完所有指令后,寄存器 可能取得的不同最终值数量。
数据范围
样例 1
3
+ 1 sync
= 2 async
+ 3 async
2
样例 2
10
= 7 async
+ 3 async
+ 5 sync
+ 3 async
= 1 sync
+ 9 async
+ 10 async
+ 1 sync
+ 3 async
+ 4 sync
30
样例说明
在样例 1 中,第 条指令首先执行,使 。之后,第 、 条异步指令可以按以下两种顺序执行:
- 先执行
= 2,再执行+ 3,最终 ; - 先执行
+ 3,再执行= 2,最终 。
因此,最终值共有 种: 和 。