#P15612. [ICPC 2021 Jakarta R] Feeder Robot
[ICPC 2021 Jakarta R] Feeder Robot
说明
文森特将他的退休计划从养马和养羊改为养鸡。他采购了 只鸡,并将每只鸡放入它们自己的鸡舍中。鸡舍被放置在一条直线上,从左到右依次编号为 到 。
为了让他的退休生活幸福(至少他是这么想的),文森特买了一个喂食机器人。这个机器人装载着 颗饲料颗粒,并将它们分发给鸡群。喂食机器人会从一个鸡舍移动到相邻的鸡舍,并向它访问的每个鸡舍分发 颗饲料。如果一个鸡舍被机器人访问了 次(包括机器人的初始位置),那么它将获得 颗饲料。
然而,文森特刚刚注意到他无法控制机器人的移动方式。设机器人位于鸡舍 前。如果机器人还有剩余饲料要分发,它会随机移动到相邻的鸡舍(鸡舍 或 ),并向那个鸡舍分发 颗饲料。重复此过程,直到机器人没有饲料可分发。注意,如果 ,则机器人将移动到鸡舍 ;类似地,如果 ,则机器人将移动到鸡舍 。
尽管你是他唯一的朋友,但文森特还是不喜欢你,于是他向你发起挑战。挑战是:如果机器人从鸡舍 出发,计算有多少种可能的饲料分布。一个饲料分布被定义为一个元组 ,其中 是机器人的最终位置, 是鸡舍 获得的饲料颗粒数。两个分布被认为是不同的当且仅当机器人的最终位置不同,或者存在某个鸡舍获得的饲料数量不同。机器人的移动路径或鸡舍获得饲料的顺序无关紧要。
由于输出可能非常大,文森特要求你给出输出除以 后的非负余数。他相信你无法解决这个问题,因此同意如果你成功应对挑战,将给予你丰厚的奖励。
例如,设 ,,。此例中有 种不同的饲料分布。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。导致此分布的机器人移动路径为:机器人从鸡舍 开始,向鸡舍 分发 颗饲料;然后移动到鸡舍 ,向鸡舍 分发 颗饲料;然后移动到鸡舍 ,向鸡舍 分发 颗饲料。简记为 。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。机器人的移动路径为 。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。机器人的移动路径为 。
输入格式
输入包含三个整数 、 和 (;;),分别表示鸡舍的数量、饲料颗粒的数量以及喂食机器人的起始位置。
输出格式
输出一行一个整数,表示不同饲料分布的数量除以 后的非负余数。
4 3 2
3
3 5 2
3
3 6 2
6
提示
样例输入/输出 #2 解释
此例中有 种不同的饲料分布。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。机器人的移动路径为 $2 \rightarrow 1 \rightarrow 2 \rightarrow 1 \rightarrow 2$。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。机器人的移动路径为 $2 \rightarrow 3 \rightarrow 2 \rightarrow 3 \rightarrow 2$。
- :机器人结束于鸡舍 ,每个鸡舍获得的饲料数量为 。机器人的移动路径为 $2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 2$ 或 $2 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 2$;两者给出相同的分布,即机器人最终位于同一鸡舍,且每个鸡舍获得的饲料数量相同。
样例输入/输出 #3 解释
此例中有 种不同的饲料分布:、、、、 和 。
翻译由 DeepSeek 完成
京公网安备 11011102002149号