#M251024. 传动结构

传动结构

题目描述

小 Z 刚刚学了传动结构,对齿轮的工作很感兴趣。

现有 1n1\sim n 个齿轮,每个齿轮的大小(齿数)为 aia_i。初始每个齿轮都是独立的,现有 mm 个询问。

  1. 将齿轮 xx 的齿数改成 cc
  2. 使齿轮 x,yx,y 互相咬合;
  3. 假设齿轮 xx 的转速为 vv,求此时齿轮 yy 的转速。

小 Z 已经了解两个齿轮互相咬合时的速度计算:如齿轮 ii 的大小为 ii,速度为 VV,则与之咬合的齿轮 jj 的速度为 V×ij-\frac{V\times i}j。其中负号表示与 VV 相反的方向。

同时注意齿轮也会卡死,比如当一个齿轮试图向两个方向旋转时便会发生此情况。与被卡死的齿轮相咬合的齿轮也会被卡死。比如,如果三个齿轮两两咬合,那么所有齿轮都不能旋转;在此基础上,再将第 44 个齿轮与其中任一齿轮咬合,则它也会被卡死。

输入格式

第一行,22 个正整数 n,mn, m

第二行,nn 个正整数 aia_i

接下来 mm 行,每行表示一个操作,开头的第一个整数 opop 表示操作的类型:

  1. op=1op=1,接下来 22 个正整数 x,cx,c
  2. op=2op=2,接下来 22 个正整数 x,yx,y
  3. op=3op=3,接下来 33 个正整数 x,y,vx,y,v

输出格式

针对 op=3op=3 的询问,输出若干行所求相应齿轮的速度,因为结果很可能不为整数,所以输出分数的形式,即 22 个整数,中间用一个 / 分隔(如果是整数也要以分数形式表示)。如果被卡死,输出 0

输入输出样例

4 10
6 8 10 13
3 1 2 2
2 1 2
3 1 2 3
2 2 3
1 1 7
3 1 3 10
2 3 1
3 1 3 2
2 1 4
3 1 4 6
0
-9/4
7/1
0
0

样例 #1\tt \#1说明

  • 对于第 11 个第三类的询问,由于此时任意两齿轮都没有相互咬合,故答案为 00
  • 对于第 22 个第三类的询问,我们可以计算转速为:3×68=94−3\times \frac{6}8=\frac{-9}4
  • 对于第 33 个第三类的询问,我们可以分两次使用公式计算。那么第 22 个齿轮的转速为 10×78=354-10\times \frac{7}8=\frac{-35}4 。第 33 个齿轮的转速为 (354)×810=71-(\frac{-35}4)\times\frac{8}{10}=\frac{7}1
  • 对于最后一个第三类的询问,此时所有齿轮都被卡住了。

数据范围

  • 对于 30%30\% 的数据,n,m3000n,m\le3000
  • 对于 100%100\% 的数据,$1\le n\le 10^5,1\le m \le2\times 10^5,6\le a_i\le 10^6,1\le x,y \le n, 1\le c, v\le 10^6$