AT_scpc2026_div1_j ChannelTalk Workflow

题目描述

#### 表示言语 / / > ChannelTalk 是一款一体化 AI 消息工具,可促进与客户的实时沟通,并提供了一项工作流功能,允许任何人轻松创建聊天机器人。通过 ChannelTalk Workflow,你可以像搭积木一样组合触发器和动作,根据客户和情境自动化从咨询开始到结束的全部流程。此外,经常使用的功能可以创建为模块,并多次复用。 Ino 打算利用 ChannelTalk Workflow 构建一个聊天机器人,用于处理 $N$ 种不同类型的问题。每种问题被分配一个从 $1$ 到 $N$ 的唯一编号。 Ino 希望将 $M$ 个模块添加到工作流中,并按照添加顺序将它们编号为 $0$ 到 $M-1$。由于 Ino 无法管理太多模块,最多只能使用 $2\,048$ 个模块。 当输入第 $x$ 号问题时,第 $i$ 号模块的操作如下: - 如果 $x = i$,则会答复该问题并结束咨询。 - 如果 $x \neq i$,那么当 $x \le F_i$ 时,将问题 $x$ 传递到模块 $L_i$,否则(即 $x > F_i$)传递到模块 $G_i$。 当收到一个问题时,最初被输入到模块 $0$,并且每执行一个模块需要 $1$ 秒。也就是说,处理第 $i$ 号问题所用的时间,等于从模块 $0$ 到模块 $i$ 并以此结束咨询所经过的模块总数(包括模块 $0$ 和模块 $i$),同一模块如果被多次经过则需要多次计数。 Ino 希望确保无论输入的是编号 $1$ 到 $N$ 中的哪一个问题,咨询都恰好在 **第 $K$ 秒时结束**。给定问题类型数量 $N$ 和结束时间 $K$,请你选择所用的模块数 $M$ 以及每个模块的 $F_i$、$L_i$ 和 $G_i$ 的值,使得无论输入的是哪一个问题,咨询都恰好在第 $K$ 秒结束,并且模块总数不超过 $2\,048$。**注意 $M$ 不需要最小化。**

输入格式

输入通过标准输入给出,格式如下: > $N$   $K$

输出格式

第一行输出所使用的模块总数 $M$。($1 \leq M \leq 2\,048$) 接下来第 $2$ 行到第 $M+1$ 行,每行依次输出模块 $i$ 的 $F_i,\ L_i,\ G_i$,以空格分隔。($0 \leq F_i \leq N;\ 0 \leq L_i, G_i < M$) 如果不存在解,输出 `-1`。

说明/提示

### 约束条件 - $2 \leq K \leq N \leq 1\,000$ - 全部输入值均为整数。 由 ChatGPT 5 翻译