HM167 通用模具填肉
HM167 通用模具填肉
来源: 第 167 集 模板-模板的概念
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
泛型编程靠「模具」提高复用:先搭一个通用框架,使用时再填入具体内容。模具有两条硬规矩:
- 不能直接使用。空框架本身不是成品,没填内容就交出去无效。
- 并非万能。每种模具只允许特定种类来填;种类不对就不能套用。
现有 \(m\) 个模具。每个模具是一段不含空白的框架字符串,其中每个 $ 是一个待填槽;并给出它允许的种类列表。同一模具可以反复填不同内容。
处理 \(q\) 次操作:
0 id:试图直接交出编号为 \(id\) 的模具(\(0\) 起编号)。输出模板不能直接使用。1 id kind k v_1 v_2 \ldots v_k:用种类kind往该模具里填 \(k\) 个不含空白的词。- 若
kind不在该模具的允许列表中,输出模板并非万能。 - 若 \(k\) 与框架里
$的个数不同,输出占位不符。 - 否则按从左到右的顺序,把每个
$依次替换成 \(v_1,v_2,\ldots,v_k\),输出填好后的整串。
- 若
输入格式
第一行一个整数 \(m\)(\(1 \le m \le 100\))。
接下来 \(m\) 行,第 \(i\) 行依次为:框架字符串 \(f_i\)、允许种类数 \(c_i\)(\(1 \le c_i \le 10\))、随后 \(c_i\) 个种类名。框架长度 \(1 \le |f_i| \le 100\),且至少有一个 $。种类名、填词长度均不超过 \(20\),只含字母或数字。
再一行整数 \(q\)(\(1 \le q \le 1000\))。随后 \(q\) 行,格式如题目描述。保证 \(0 \le id < m\),\(0 \le k \le 20\)。
输出格式
每个操作一行结果,行末换行。
样例
输入 #1
2
衣$帽$鞋$ 1 人
年$月$ 1 年终
5
0 0
1 0 人 3 黑 红 白
1 0 宠物 3 猫 狗 鸟
1 1 年终 2 2026 12
1 1 季度 2 一 二
输出 #1
模板不能直接使用
衣黑帽红鞋白
模板并非万能
年2026月12
模板并非万能
输入 #2
1
A$B$ 2 甲 乙
3
1 0 甲 1 只
1 0 甲 2 左 右
1 0 乙 2 上 下
输出 #2
占位不符
A左B右
A上B下
说明
- 模具只是框架,直接交出(操作 \(0\))永远失败。
- 同一种模具可以多次填肉,这就是复用。
- 种类不匹配时不要改框架,只提示并非万能。
信息
- ID
- 1166
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者