#P7881. [Ynoi2006] rmpq
[Ynoi2006] rmpq
题目描述
你需要包含头文件lib.h
;
在本地编译时,需要和 lib.cpp
一起编译;
交互库提供了以下数据类型和函数:
struct Data{
unsigned short a,b,c,d;
void operator*=(const Data &x);
void clr();
};
Data 类型是一个含幺半群 ,具体地:
是类型为 Data 的元素构成的集合;
使用 x.clr()
可以将 修改为 ;
使用 x=y
可以将 修改为 ;
使用 x*=y
可以将 修改为 ,这个操作的调用次数有常数上限 ,不计 或 的情况。
初始条件下,平面上每个点 都对应一个权值 ;
你需要实现以下函数:
void update(int x,int dim,Data d1,Data d2);
对每个 执行操作:
若 且 ,则将 修改为 ;
若 且 ,则将 修改为 ;
若 且 ,则将 修改为 ;
若 且 ,则将 修改为 ;
Data query(int x,int y);
查询 ,返回值为答案。
为了您的方便,这里提供模板。请完善以下代码:
/* BEGIN HEADER: */
struct Data{
unsigned short a,b,c,d;
void operator*=(const Data &x);
void clr();
};
void update(int x,int dim,Data d1,Data d2);
Data query(int x,int y);
/* END HEADER. */
#include <bits/stdc++.h>
void update(int x,int dim,Data d1,Data d2){
// complete this
}
Data query(int x,int y){
// complete this
}
由于洛谷的交互方法比较奇怪,所以提交的时候需要把本地的代码复制过来,放在 update, query 函数这里,和前面的 HEADER 一起提交。提交时不引用 "lib.h" 头文件。
输入格式
这是交互题,不需要这种东西。
输出格式
这是交互题,不需要这种东西。
10
2 200842854 123159544
2 192001936 902183645
2 996055655 154684468
2 957446126 232761122
1 739061119 1 4 6
1 762263616 1 5 8
1 669159682 0 10 7
2 361701640 274578757
1 392040275 0 2 8
1 800311125 1 3 2
(0,0,0,0)
(0,0,0,0)
(0,0,0,0)
(0,0,0,0)
(19,19,329,10)
提示
Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078
对于前 8 组数据,操作个数分别为 ,且 均匀随机选取;
对于其余数据,操作个数为 ,且构成子任务。
对于所有数据: 对于 update 操作,满足 ,; 对于 query 操作,满足 。