题目描述
你需要包含头文件lib.h
;
在本地编译时,需要和 lib.cpp
一起编译;
交互库提供了以下数据类型和函数:
Data 类型是一个含幺半群 (D,∗,e),具体地:
D 是类型为 Data 的元素构成的集合;
∗:D×D→D
e∈D
∀x,y,z∈D,x∗(y∗z)=(x∗y)∗z
∀x∈D,x∗e=e∗x=x
使用 x.clr()
可以将 x 修改为 e;
使用 x=y
可以将 x 修改为 y;
使用 x*=y
可以将 x 修改为 x∗y,这个操作的调用次数有常数上限 2×107,不计 x=e 或 y=e 的情况。
初始条件下,平面上每个点 (x,y) 都对应一个权值 d(x,y)∈D;
你需要实现以下函数:
对每个 (x0,y0) 执行操作:
若 dim=0 且 x0<x,则将 d(x0,y0) 修改为 d(x0,y0)∗d1;
若 dim=0 且 x0≥x,则将 d(x0,y0) 修改为 d(x0,y0)∗d2;
若 dim=1 且 y0<x,则将 d(x0,y0) 修改为 d(x0,y0)∗d1;
若 dim=1 且 y0≥x,则将 d(x0,y0) 修改为 d(x0,y0)∗d2;
查询 d(x,y),返回值为答案。
为了您的方便,这里提供模板。请完善以下代码:
由于洛谷的交互方法比较奇怪,所以提交的时候需要把本地的代码复制过来,放在 update, query 函数这里,和前面的 HEADER 一起提交。提交时不引用 "lib.h" 头文件。
输入格式
这是交互题,不需要这种东西。
输出格式
这是交互题,不需要这种东西。
提示
Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078
对于前 8 组数据,操作个数分别为 10,1000,10000,20000,40000,60000,80000,105,且 x,y,dim 均匀随机选取;
对于其余数据,操作个数为 105,且构成子任务。
对于所有数据:
对于 update 操作,满足 1≤x≤109,dim∈{0,1};
对于 query 操作,满足 1≤x,y≤109。