题目背景
前言:虽然 SCR 已经并入了 JROI,但作为 JROI 的负责人,我还是想要感谢一下 SCR 出题组的无私奉献。出于对出题人的敬意。我们不会在题目背景故事上做大的改动,只会添加小部分上下衔接的语句。
蒟蒻火锅正在煮,自然要打一盘游戏了。
小 L 是个喜欢打第五的初中生。这天他刚自学完了向量的基本运算,正在打第五时,他看着自己画出来的长短、方向各异的机关墙(他在玩疯眼),有了一个奇妙的想法。
题目描述
小 L 有 n 个向量 a1,a2…an,他希望你能够帮他回答下面两个问题。
i=l∑r−1j=i+1∑rai⋅aj
i=l∑r−1j=i+1∑rai⊕aj随着时间的推移,这些向量也会不断发生变化,小 L 希望你在发生变化后仍然能给出答案。
输入格式
第一行两个整数 n,m,分别代表向量个数和操作次数。
接下来 n 行,每行两个整数 x,y,第 i 行表示向量 ai。
接下来 m 行,每行首先有一个整数 opt 表示操作序号,之后有若干个整数表示一次操作。一共有下面五种操作。
- 输入三个整数 i,x,y(1≤i≤n),将 ai 加上 (x,y)。
- 输入三个整数 i,x,y(1≤i≤n),将 ai 减去 (x,y)。
- 输入两个整数 i,t(1≤i≤n),将 ai 修改为 tai。
- 输入两个整数 l,r(1≤l<r≤n),求 i=l∑r−1j=i+1∑rai⋅aj。
- 输入两个整数 l,r(1≤l<r≤n),求 i=l∑r−1j=i+1∑rai⊕aj。
输出格式
对于所有的第四和第五种操作,一行有一个整数,为这次操作的答案。
提示
样例 1 解释
前两次操作后三个向量分别为 (4,7),(4,5),(−2,4),之后询问结果为 4×(−2)+5×4=12。
下一次操作后三个向量分别为 (4,7),(12,15),(−2,4),询问结果为 (4×15−7×12)+[4×4−7×(−2)]+[12×4−15×(−2)]=−24+30+78=84
数据规模与约定
本题采用捆绑测试。
- Subtask 1 ( 20% ):n,m≤100。
- Subtask 2 ( 30% ):没有操作五。
- Subtask 3 ( 50% ):无特殊要求。
对于 100% 的数据,2≤n≤105,1≤m≤105,保证对于任意时刻的向量 ai,满足 −1000≤xi,yi≤1000。
关于向量运算
对于向量 a,b 和常数 λ,假定 a,b 的坐标表示分别为 (xa,ya),(xb,yb):
- a+b=(xa+xb,ya+yb)
- a−b=(xa−xb,ya−yb)
- λa=(λxa,λya)
- a⋅b=xaxb+yayb
- a⊕b=xayb−xbya