luogu#P6588. 『JROI-1』 向量

『JROI-1』 向量

题目背景

前言:虽然 SCR 已经并入了 JROI,但作为 JROI 的负责人,我还是想要感谢一下 SCR 出题组的无私奉献。出于对出题人的敬意。我们不会在题目背景故事上做大的改动,只会添加小部分上下衔接的语句。


蒟蒻火锅正在煮,自然要打一盘游戏了。

小 L 是个喜欢打第五的初中生。这天他刚自学完了向量的基本运算,正在打第五时,他看着自己画出来的长短、方向各异的机关墙(他在玩疯眼),有了一个奇妙的想法。

题目描述

小 L 有 nn 个向量 $\overrightarrow{a_1},\overrightarrow{a_2}\ldots\overrightarrow{a_n}$,他希望你能够帮他回答下面两个问题。

  • 对于给定的 l,rl,r,求出
$$\sum\limits_{i=l}^{r-1}\sum\limits_{j=i+1}^{r}\overrightarrow{a_i}\cdot\overrightarrow{a_j} $$
  • 对于给定的 l,rl,r,求出
$$\sum\limits_{i=l}^{r-1}\sum\limits_{j=i+1}^{r}\overrightarrow{a_i}\oplus\overrightarrow{a_j} $$

随着时间的推移,这些向量也会不断发生变化,小 L 希望你在发生变化后仍然能给出答案。

输入格式

第一行两个整数 n,mn,m,分别代表向量个数和操作次数。

接下来 nn 行,每行两个整数 x,yx,y,第 ii 行表示向量 ai\overrightarrow{a_i}

接下来 mm 行,每行首先有一个整数 optopt 表示操作序号,之后有若干个整数表示一次操作。一共有下面五种操作。

  1. 输入三个整数 i,x,y(1in)i,x,y(1\leq i\leq n),将 ai\overrightarrow{a_i} 加上 (x,y)(x,y)
  2. 输入三个整数 i,x,y(1in)i,x,y(1\leq i\leq n),将 ai\overrightarrow{a_i} 减去 (x,y)(x,y)
  3. 输入两个整数 i,t(1in)i,t(1\leq i\leq n),将 ai\overrightarrow{a_i} 修改为 tait\overrightarrow{a_i}
  4. 输入两个整数 l,r(1l<rn)l,r(1\leq l<r\leq n),求 $\sum\limits_{i=l}^{r-1}\sum\limits_{j=i+1}^{r}\overrightarrow{a_i}\cdot\overrightarrow{a_j}$。
  5. 输入两个整数 l,r(1l<rn)l,r(1\leq l<r\leq n),求 $\sum\limits_{i=l}^{r-1}\sum\limits_{j=i+1}^{r}\overrightarrow{a_i}\oplus\overrightarrow{a_j}$。

输出格式

对于所有的第四和第五种操作,一行有一个整数,为这次操作的答案。

3 5
1 1
4 5
1 4
1 1 3 6
2 3 3 0
4 2 3
3 2 3
5 1 3
12
84

提示

样例 1 解释

前两次操作后三个向量分别为 (4,7),(4,5),(2,4)(4,7),(4,5),(-2,4),之后询问结果为 4×(2)+5×4=124 \times(-2)+5\times4=12

下一次操作后三个向量分别为 (4,7),(12,15),(2,4)(4,7),(12,15),(-2,4),询问结果为 $(4\times15-7\times12)+[4\times4-7\times(-2)]+[12\times4-15\times(-2)]=-24+30+78=84$


数据规模与约定

本题采用捆绑测试

  • Subtask 1 ( 20%20\% ):n,m100n,m\leq 100
  • Subtask 2 ( 30%30\% ):没有操作五。
  • Subtask 3 ( 50%50\% ):无特殊要求。

对于 100%100\% 的数据,2n1052\leq n\leq 10^51m1051\leq m\leq 10^5保证对于任意时刻的向量 ai\overrightarrow{a_i},满足 1000xi,yi1000-1000\leq x_i,y_i\leq 1000


关于向量运算

对于向量 a,b\overrightarrow{a},\overrightarrow{b} 和常数 λ\lambda,假定 a,b\overrightarrow{a},\overrightarrow{b} 的坐标表示分别为 (xa,ya),(xb,yb)(x_a,y_a),(x_b,y_b)

  • $\overrightarrow{a}+\overrightarrow{b}=(x_a+x_b,y_a+y_b)$
  • $\overrightarrow{a}-\overrightarrow{b}=(x_a-x_b,y_a-y_b)$
  • $\lambda\overrightarrow{a}=(\lambda x_a,\lambda y_a)$
  • $\overrightarrow{a}\cdot\overrightarrow{b}=x_ax_b+y_ay_b$
  • $\overrightarrow{a}\oplus\overrightarrow{b}=x_ay_b-x_by_a$