#P10924. Happybob's Game (UBC001D)

Happybob's Game (UBC001D)

题目描述

注:本题中所有 i,ji,j 均默认 1i,jn1\le i,j\le niji\not = j

Happybob 的游戏角色正在进行战争。

他有 nn 个部队,每个部队有 aia_i 个人,并且有消耗值 mim_i,表示每过 11 分钟第 ii 个部队的人会变成 aimi⌊\frac{a_i}{m_i}⌋,一旦其中一支部队人数变成 00,Happybob 就失败了。设一开始为第 00 分钟,定义存活时间为 Happybob 的其中一支部队人数变成 00 的上一分钟。可参考样例解释。

但是 Happybob 不甘就这样就被消灭,他想到了好办法:他可以在任意不是整数分钟的时间将一个部队的人调一部分到另一个部队。形式化来说,取两支军队 ai,aja_i, a_j 以及一个调换人数 xx 满足 1xai1\le x\le a_i,使 ai,aja_i,a_j 分别变成 aix,aj+xa_i-x,a_j+x。注意,在两个整数分钟间,他可以调换任意多次。

Happybob 发现,这样可以有效地提升部队存活时间。现在你作为 Happybob 最信任的参谋长,你可以帮他调兵遣将。

接下来给你 qq 次操作,每次操作是以下操作中的一个:

  • 操作 11,形如 1 i x,表示 Happybob 的第 ii 支部队的人数 aia_i 变成了 xx1x1091\le x\le 10^9)。
  • 操作 22,形如 2 i x,表示 Happybob 的第 ii 支部队的消耗值 mim_i 变成了 xx1x1061\le x\le 10^6)。
  • 操作 33,形如 3,表示让你输出 Happybob 理论上通过上述调兵遣将法最久的存活时间。注意,此操作不会改变 aia_imim_i 的值。

输入格式

第一行,两个正整数 n,qn,q

接下来两行,每行 nn 个正整数,分别表示 aa 数组与 mm 数组。

接下来 qq 行,每行都是上述三种操作之一。

输出格式

假设共有 optopt 次操作 33,那么你的答案应该有 optopt 行,每行表示当前状态下 Happybob 的最长可能存活时间。如果 Happybob 的军队可以无限地活下去,输出 -1

2 10
29 5
7 2
1 2 3
2 1 3
3
1 1 1
1 2 1
2 1 1
2 2 1
3
2 1 2
3
3
-1
0

提示

样例说明

对于第一个操作 33,Happybob 可以这样调动军队:

时刻(分) 第一支军队人数 第二支军队人数
00 2929 33
0.50.5 1010 2222
11 33 1111
1.51.5 66 88
22 44
2.52.5 33
33 11
3.53.5
44 00

数据范围

对于 100%100\% 的数据,1n5×1061\le n \le 5\times 10^61q1051\le q \le 10^5。保证对于所有 ai,mia_i,m_i1ai1091\le a_i\le 10^91mi1061\le m_i\le 10^6