HM167 通用模具填肉

HM167 通用模具填肉

HM167 通用模具填肉

来源: 第 167 集 模板-模板的概念

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

泛型编程靠「模具」提高复用:先搭一个通用框架,使用时再填入具体内容。模具有两条硬规矩:

  1. 不能直接使用。空框架本身不是成品,没填内容就交出去无效。
  2. 并非万能。每种模具只允许特定种类来填;种类不对就不能套用。

现有 \(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
通过率
?
上传者