4339: 「清华集训 2017」福若格斯
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:0
题目描述
> 小d是4xx9小游戏高手。
有一天,小d发现了一个很经典的小游戏:跳青蛙。
游戏在一个**5**个格子的棋盘上进行。在游戏的一开始,最左边的两个格子上各有一个向右的青蛙,最右边的两个格子上各有一个向左的青蛙。
![](https://i.loli.net/2017/12/14/5a32622508ea9.png)
每次移动可以选取一个青蛙,向这只青蛙的前方移动一格到空格子中或跳过前方的**一个不同朝向**的青蛙并移动到空格子中。
![](https://i.loli.net/2017/12/14/5a3262250ca07.png)
![](https://i.loli.net/2017/12/14/5a3262250e38a.png)
为了使你更好地理解这个游戏,我们下发了一个游戏demo作为参考(**注意**:这个demo中的棋盘大小和题目中并不相同)。
这个游戏本身当然难不倒小d,小d轻松地就解决了这个游戏。但是一个人玩游戏实在是太寂寞了,于是小d找到了小m和他一起玩耍。小d规定,自己只能操控向右的青蛙,小m只能操控向左的青蛙。
小d很快发现,这个游戏想要做到双方轮流行动,就无法达到交换所有青蛙的游戏结局。于是,小d打开了`m`个游戏,并规定双方轮流行动,每次选择其中一个游戏并控制自己的青蛙行动一步(不能不动)。小d发现,这么做的话就能够使大部分的游戏最终都交换所有的青蛙了。
由于小d是坑队友高手,所以他们玩了一会之后,就开始互相坑害对方,都希望使对方无法行动。他们约定,当轮到一方行动时,若其所有的青蛙都无法行动,则**对方**获得游戏的胜利。正当博弈论大师小d计算着谁会成为最后的胜者时,电脑卡死了。小d发现,只能kill掉一些游戏才能使剩下的游戏进行下去了。由于电脑已经卡死了,小d无法自由选择kill掉哪些游戏,只能运行系统自带的随机kill小程序。具体来说,小d运行这个随机kill小程序之后,每个游戏有$\frac{1}{2}$的概率被kill掉,有$\frac{1}{2}$的概率能够继续下去。游戏之间被kill掉的概率是独立的。
小d思考了一番,决定如果运行小程序之后他的胜率过低,就直接重启电脑。这时,小d突然发现自己已经不记得刚才轮到谁行动了,于是他决定综合考虑自己先手和后手的胜率。
小d并不擅长概率论,他想让你告诉他运行小程序后,剩下的局面为小d必胜、小m必胜、先手必胜、后手必胜的概率各为多少,这样他才能更好地决定是否重启电脑。
为了避免精度问题,输出答案乘 $2^m$ 之后对 $998244353$ 取模的结果。
**注意:题目并不保证输入的所有`m`个状态中小m和小d之前的总行动步数相差不超过1,但是保证不会出现起始状态无法到达的状态。**
输入
从标准输入读入数据。
我们使用一个长度为5的字符串来表示一个状态,其中,`L`表示面朝**右**的青蛙,`R`表示面朝**左**的青蛙,`_`(下划线)表示空格子。例如,初始状态为`LL_RR`。
本题含有多组数据,第一行两个整数`T,C`($1\leq C\leq 100$)分别表示测试点编号和数据组数。
对于每组数据,第一行一个整数`n`($1\leq n\leq 23$)表示不同状态的棋盘个数,接下来`n`行每行一个长度为5的字符串$s_i$和一个正整数$a_i$($1\leq a_i\leq 10^6$),分别表示棋盘的状态和在该状态下的棋盘的个数。
保证输入的字符串合法且不重复。
输出
输出到标准输出。
定义$m=\sum a_i$。
对于每组数据,输出一行四个整数,分别表示小d必胜(即L的控制方必胜)、小m必胜(即R的控制方必胜)、先手必胜、后手必胜的概率乘$2^m$之后对$998244353$取模的结果。
样例输入 复制
0 1
1
LL_RR 1
样例输出 复制
0 0 1 1
提示
输入样例2
0 1 3 LRRL_ 1 LRR_L 1 LLR_R 1
输出样例2
4 2 0 2
输入样例3
0 1 1 LRRL_ 1000000
输出样例3
421273116 0 0 1
数据范围:保证数据中不会出现从`LL_RR`状态无法到达的状态(如`RLLR_`),故合法的状态共有23种。 定义 **$k-$不可达点** 为从`LL_RR`操作$k$次(双方加起来一共操作$k$次,顺序任意)后依然无法到达的合法状态,如 1-不可达点 为 :全集$\setminus${`LL_RR`,`L_LRR`,`LLR_R`} 共20个, 5-不可达点 为{`RLR_L`,`RRL_L`,`RR_LL`,`R_LRL`,`R_RLL`}。 对于100%的数据,$1\leq n\leq 23$,$1\leq m\leq 10^6$,$1\leq C\leq 100$,所有可能出现在该数据点的状态均为等概率出现(也就是说你可以认为最后一个点中每种状态的$a_i$之和大约为$10^8/23$)。 | 测试点编号( $ T $ ) | $ C $ | $ m $ | 其他 | |-|-|-|-| | 1 | =100 | =1 | 无限制 | | 2 | =100 | $ \leq 5 $ | 无限制 | | 3 | =100 | $ \leq 8 $ | n=m | | 4 | =100 | $ \leq 10 $ | n=m | | 5 | =100 | 无限制 | n=1 | | 6 | =100 | 无限制 | n=1 | | 7 | =100 | $ \leq 500 $ | 只含5-不可达点 | | 8 | =100 | $ \leq6\times 10^5 $ | 只含5-不可达点 | | 9 | =100 | $ \leq 100 $ | 只含2-不可达点 | | 10 | =100 | $ \leq7\times 10^5 $ | 只含2-不可达点 | | 11 | =100 | $ \leq 16 $ | 只含1-不可达点 | | 12 | =100 | $ \leq8\times 10^5 $ | 只含1-不可达点 | | 13 | =100 | $ \leq 14 $ | 只含0-不可达点 | | 14 | =100 | $ \leq9\times 10^5 $ | 只含0-不可达点 | | 15 | =100 | $ \leq 12 $ | 无限制 | | 16 | =100 | $ \leq 5000 $ | 无限制 | | 17 | =100 | $ \leq 10^5 $ | 无限制 | | 18 | =100 | $ \leq2\times 10^5 $ | 无限制 | | 19 | =100 | 无限制 | 无限制 | | 20 | =100 | 无限制 | 无限制 |