P7881 [Ynoi2006] rmpq

题目描述

你需要包含头文件`lib.h`; 在本地编译时,需要和 `lib.cpp` 一起编译; 交互库提供了以下数据类型和函数: ```cpp struct Data{ unsigned short a,b,c,d; void operator*=(const Data &x); void clr(); }; ``` Data 类型是一个含幺半群 $(D,*,e)$,具体地: $D$ 是类型为 Data 的元素构成的集合; $*:D\times D\to D$ $e\in D$ $\forall x,y,z\in D, x*(y*z)=(x*y)*z$ $\forall x\in D, x*e=e*x=x$ 使用 `x.clr()` 可以将 $x$ 修改为 $e$; 使用 `x=y` 可以将 $x$ 修改为 $y$; 使用 `x*=y` 可以将 $x$ 修改为 $x*y$,这个操作的调用次数有常数上限 $2\times 10^7$,不计 $x=e$ 或 $y=e$ 的情况。 初始条件下,平面上每个点 $(x,y)$ 都对应一个权值 $d(x,y)\in D$; 你需要实现以下函数: ```cpp void update(int x,int dim,Data d1,Data d2); ``` 对每个 $(x_0,y_0)$ 执行操作: 若 $dim=0$ 且 $x_0

输入格式

这是交互题,不需要这种东西。

输出格式

这是交互题,不需要这种东西。

说明/提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078 对于前 8 组数据,操作个数分别为 $10,1000,10000,20000,40000,60000,80000,10^5$,且 $x,y,dim$ 均匀随机选取; 对于其余数据,操作个数为 $10^5$,且构成子任务。 对于所有数据: 对于 update 操作,满足 $1\le x\le 10^9$,$dim\in\{0,1\}$; 对于 query 操作,满足 $1\le x,y\le 10^9$。