CF1810D Climbing the Tree
题目描述
蜗牛在爬树。树高为 $ h $ 米,每只蜗牛从 $ 0 $ 米高处开始爬。
每只蜗牛有两个属性 $ a $ 与 $ b \text{ } ( a > b ) $。从第 $ 1 $ 天开始,每只蜗牛会以以下方式爬树:在白天,蜗牛向上爬 $ a $ 米; 在晚上,蜗牛会休息,而它每晚会向下滑 $ b $ 米。如果在第 $ n $ 天,蜗牛首次到达第 $ h $ 米的高度(也就是树顶),它就会结束爬行,此时我们称此蜗牛花了 $ n $ 天来爬树。注意,在最后一天,只要蜗牛离树顶的高度小于 $ a $ 米,它就不需要正好再向上爬 $ a $ 米。
起初,你并不知道树高 $ h $,你只知道 $ h $ 是一个正整数。接下来会发生以下两种类型的事件,事件件数总和为 $ q $。
- 事件 $ 1 $:有一只属性为 $ a $, $ b $ 的蜗牛声称它花了 $ n $ 天来爬树。如果这条信息与之前的已知信息有冲突(即根据之前信息确定的树高范围与当前信息所确定的树高范围有冲突),则忽略该信息,否则采纳该信息。
- 事件 $ 2 $:有一只属性为 $ a $, $ b $ 的蜗牛前来询问你它需要花几天来爬树。你只能根据当前你已采纳的信息来推测答案。如果仅根据已有信息无法给出精确的答案,则回答 $ -1 $。
你需要按顺序处理所有事件。
保证单个测试点内 $ q $ 的总和不超过 $ 2 \times 10 ^ 5 $。
输入格式
无
输出格式
无
说明/提示
在第一个测试样例中,我们可以从第一条信息确定 $ h = 7 $,所有我们可以知道第二条蜗牛和第三条蜗牛各自需要 $ 2 $ 天和 $ 5 $ 天来爬树。
对于第一个样例中的第二只蜗牛,有:
- 在第 $ 1 $ 天的白天:这只蜗牛向上爬了 $ 4 $ 米,现在它在 $ 4 $ 米高处。
- 在第 $ 1 $ 天的晚上:这只蜗牛向下滑了 $ 1 $ 米,现在它在 $ 3 $ 米高处。
- 在第 $ 2 $ 天的白天:这只蜗牛向上爬了 $ 4 $ 米,现在它在 $ 7 $ 米高处(即爬到树顶)。
在第三个测试样例中,第二只蜗牛的信息与第一只蜗牛的信息有冲突,因为第二支蜗牛说它花了 $ 3 $ 天爬树,而它在前 $ 3 $ 天最多可以爬 $ 1 + 1 + 2 = 4 $ 米,而第一只蜗牛只需要花 $ 1 $ 天就能爬 $ 4 $ 米。