3697: 第 K 排列(第五轮03)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

牛牛有一个长度大小为N 的字符串, 字符串中的字符仅包括′N′,′O′,′I′,′P′四种。现 在牛牛把这个字符串中的某些字符隐藏掉,用?字符代替。

例如原本的字符串是"PPPOPPOPO",牛牛将其隐藏一些字符后一种可能的情况 就是字符串变为"???OP???O"

牛牛想让牛妹猜出这个字符串原来是什么。当然直接去猜的话牛妹肯定过一万年 也猜不出来这个字符串是什么。

所以他告诉牛妹,这个字符串是所有可能的字符串中权值大于等于x, 字典序降 序排列的第k个解。

所谓字典序,是指按照查字典的顺序对字符串进行排序,例如"aac"的字典序就小 "aba"。

现在牛牛给出了这样一种计算字符串权值的方式,首先牛牛给牛妹一张表格。


表格中右下的 4*4 部分表示字符串中每出现一次行标字母出现在左侧,且列标字 母出现在右侧的情况,整个字符串的权值就要加上对应的数值。

例如:如果字符串中出现了"NN"相连,就要加上a,如果字符串中出现了"IO"相 连,就要加上j,如果出现了"OI"相连,就要加上g。

计算整个字符串的权值就是出现的所有情况权值之和,例如字符串"NNOI"的权 值就为 a+b+g。

请你帮助牛妹找到原来的字符串,如果权值大于等于x可能的字符串数目不够k个, 则直接输出一行"-1"表示无解。

输入

第一行输入三个正整数N, x, k,表示字符串长度,牛牛的字符串是权值大于等于 x,字典序降序排列的第k个解。

接下来一行输入一个长度大小为 N 的字符串,字符串仅包括 ′N′,′O′,′I′,′P′,′?′。 接下来输入一个 4*4 的矩阵表示表格的右下部分,表格的说明见题目描述。

输出

如果存在权值大于等于x的第k个解,则输出这个字符串,否则直接输出一行"-1" 表示无解。

样例输入 复制

4 3 108 
????
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0

样例输出 复制

ININ

提示

【样例 1 输入】

4 3 108 ????

0 1 1 1

1 0 1 1

1 1 0 1

1 1 1 0

【样例 1 输出】

ININ

【样例 2 输入】

4 3 109 

????

0 1 1 1

1 0 1 1

1 1 0 1

1 1 1 0

【样例 2 输出】

-1

【样例 3 输入】

2 10 6 

??

0 0 10 0

10 10 0 0

10 0 10 10

0 10 10 0

【样例 3 输出】

IP

【样例 4  输入】

999 69270 1000

??OO?????OIP????OO??P?OINP??PNNIINNN??I????P??OPP?NN???O????IPI?POP

I????NII?P?I??P?IP?NP?PP??PO?IP?NP?O?NONIO???OI?PI??IP?I??IOI?????OP???N

NN??O?????P???O?OI?I?IN?P?IP????ON?N???O???P?POI??II???I?IOPN??NNP???

O???NO????NPP?????P?NI??IN??NI??PI??P??IPII?POP??IN?N??P???O??INP?P???O

???I???O???O?N?NNOPO?IOO??N??????P??N?P?NNNN?O?I?IO??N??N??PNINI??

PIPPPON????I?N???P???OI???NPOI??I?IN???????I???O???PINN??I??I?OIIIO?P?O?P

?O?O?N??ONONIN???I???I?N?I??N?P??OP??ONN??O?ON???????PON???O?PI???

O?O?NOPIIP??N??PNN??????IP??OIO???OO???PN?I??OON??????NNI???NPI??I?P

O?P?PO?IPP?NIINI?I?O??N?PP?O??II?IP?NOOP???IPI?OPN?OIPNONIPI?PPI?NPO

?PPPIPPI???I???I?????IOPPONOIOI?PNPN?N?OO??O?NNIPI???I??N?N???IIN??I??  P??IN???P?????????P???ONN???N?I?NPO??P??INPP??P??P???O??N?NNOO???PN ?O??P???N??P?I??O?OI?????N?PPI?IN?POP???PI????N?NNP???IN?IO?ONP???IO?

?O?N?O?PPNNOOOP??IPNPI?N??N??O?ON?????I?????NO???O?????IP????O?N?

O??IOO?I???IN???P?NOO?PI??NI??II??O?????P?I?N?O??IIIIO??N??N?NOI????I??P

??N?ONN?P??I??IP???O??????OI?N????OO

2 1 99 90

47 65 60 92

43 59 57 28

77 15 46 36

【样例 4  输出】

PPOOPPPPPOIPNPNIOOPNPOOINPNIPNNIINNNPNIOOPNPNIOPPPNNPNIOPN

PNIPIOPOPIOPNPNIIOPNIOOPNIPPNPNPPNIPONIPPNPIOPNONIOPNIOIOPION

IPNIONIOIOPNIOOPNIONNNIOOOPNPNPNIOOOOINININIPNIPNPNIONPNPNI

OOPNPNPOIONIIOPNINIOPNIONNPNIOOPNPNOOPNPNPPNPNPNPPNIONINI

ONIOOPIOOPNIIPIIOPOPNIINPNPNPNIOOPNINPNPNIOOOPNINIOOPNIOPNP

NNOPONIOOOPNPNPNPNPNPNIPPNNNNIONINIOOPNIONPNPNINIOOPIPPP

ONPNPNIONIOOPNIOOIOOPNPOIONININIOOPNPNINIOOOPNPINNPNIONIO

OIIIOOPIOOPIOOOPNIOONONINPNIIOPNIONIIOPNIPNIOPNIONNIOOOONPNI

OOPNPONPNIOOPINIOOOOPNOPIIPNPNPNPNNPNPNPNIPNIOIOPNIOOOPN

PNIINIOONIOOPNPNNIOOPNPIONIOPOOPNPONIPPPNIININIOOOPNIPPIOPNII

NIPPNOOPNPNIPIOOPNIOIPNONIPIOPPIONPOOPPPIPPIOPNIOPNIOPNPNIOP

PONOIOIOPNPNPNIOONIOPNNIPIOPNIOPNPNPNIIINPNIOOPNIINIOOPNPNP

NPNPNPNIOONNPNPNIIONPOPNPNIINPPPNPNIPNIOOOPNPNNOOOPNPNIO

PNPNIONPNPNINIOOOIOOPNPNIPPININIPOPNPNPIOPNPNPNNPNPNINIIOOO

NPNPNIONIOPNIOOPPNNOOOPNIIPNPIONIONIOOOONIOOPNIOOPNPNOPN

IOOPNPNIPNPNIOPNIOPNIOONIOPNINIOOPPNOOOPIOPNIONIINIOOPNPNP

NIONIOPNIIIIOOPNIONPNOIOOPNIOOPNPNIONNIPNIIONIPNIOOOPNPNIOIO

NPNIOOO

【样例 4  说明】

大样例

【数据范围】

对于前 10%的测试数据,保证N ≤  10, k = 1。 

对于前 30%的测试数据,保证N ≤ 10。

对于另 10%的测试数据,保证N ≤ 1000, x = 0。 

对于另 10%的测试数据,保证N ≤ 1000, k = 1。

对于另  100% 的测试 数据,  证 2 ≤ N ≤  1000,1 ≤ k ≤  1000,0 ≤ x ≤ 109, 0 ≤ a, b, c, d, . . . , o, p ≤ 10^4 。


来源/分类