#CSP202406E. 哥德尔机

    ID: 310 Type: Default 1000~5000ms 1024MiB Tried: 22 Accepted: 1 Difficulty: 10 Uploaded By: Tags>CSP数据结构其他RMQ分块分治分散层叠特殊题目常数优化并查集线段树树套树标记永久化

哥德尔机

时间限制: 5.0 秒 1.0 秒~5.0 秒

空间限制: 1024 MB

题目背景

ReLU 函数是机器学习中常用的一个激活函数,其定义为:ReLU(x)=max(0,x)\mathrm{ReLU}(x)=\max(0,x)

题目描述

在西西艾弗岛上有一台基于哥德尔机原理设计的通用人工智能机器,小 C 是负责维修这台机器的机器人。

有一天小 C 发现这个机器在一个算法部分上遇到了计算瓶颈,这个算法是这样的:

机器内部维护了一个神经网络,这个神经网络的权重是一个二维矩阵 VV,并且权重是一个整数。

即对于每个二维坐标 (x,y)(x,y),矩阵在该位置的权重是 V(x,y)V(x,y),初始权重为 00

神经网络会进行 nn 轮学习操作,每轮学习会给出参数 x1,x2,y1,y2,vx_1,x_2,y_1,y_2,v,然后对每个满足 x1xx2;y1yy2x_1 \le x \le x_2;y_1 \le y \le y_2(x,y)(x,y),将该位置对应的神经网络权重 V(x,y)V(x,y) 修改为 v+ReLU(V(x,y)v)v + \mathrm{ReLU}(V(x,y) - v)

在所有学习操作之后,神经网络的参数定下来不变了,紧接着有 mm 次神经网络推理操作,每次推理操作给出 x1,x2,y1,y2x_1,x_2,y_1,y_2,查询对应子矩阵范围内最大的神经网络权重,即 $\max\limits_{\scriptsize\begin{matrix}x_1\le x\le x_2\\y_1\le y\le y_2\end{matrix}}V(x,y)$。

小 C 发现机器在枚举这个问题优秀的算法时卡住了,目前只枚举出了一个很暴力的算法,为了让机器可以快点启动,他决定自己写好这个问题的算法来降低其启动常数,你能帮帮他吗?

输入格式

从标准输入读入数据。

输入的第一行包含两个整数 n,mn,m

接下来 nn 行每行五个整数 x1,x2,y1,y2,vx_1,x_2,y_1,y_2,v,依次表示每次学习操作的参数;

接下来 mm 行每行四个整数 x1,x2,y1,y2x_1,x_2,y_1,y_2,依次表示每次推理操作的参数。

输出格式

输出到标准输出。

mm 行,依次表示每次查询操作的答案。

5 5
1 3 2 3 3
4 5 2 5 1
3 5 1 2 1
2 5 3 4 4
1 4 3 4 2
1 5 2 5
1 5 2 5
1 5 1 5
1 4 1 5
2 5 1 3
4
4
4
4
4
10 10
3 10 7 7 10
1 10 9 9 3
4 6 7 7 7
1 8 5 5 1
6 8 1 1 1
1 3 8 8 2
2 10 10 10 9
1 10 6 6 4
1 8 9 9 4
5 9 9 9 2
1 9 2 2
2 10 1 10
2 10 6 9
2 2 1 4
2 10 8 10
7 10 1 10
1 8 1 9
1 8 5 7
3 7 5 8
2 10 1 7
0
10
10
0
9
10
10
10
10
10

子任务

对于全部数据,满足:

  • 1n,m5×1051\le n,m\le 5\times 10^5
  • 对每个修改或查询操作,1x1x2n1\le x_1\le x_2\le n1y1y2n1\le y_1\le y_2\le n
  • 对每个修改操作,1vn1\le v\le n
  • 所有数值为整数。

本题采用捆绑测试,你只有通过一个子任务中的所有测试点才能得到该子任务的分数。

子任务编号 分值 nn\le qq\le 时间限制
1 10 10210^2 1.0 秒
2 10310^3 10310^3
3 5×1055\times 10^5
4 20 10410^4
5 5×1045\times 10^4 2.0 秒
6 30 5×1055\times 10^5 5.0 秒

提示

本题输入量较大,请采用效率较高的读入方式。

本题对于同时间复杂度下的常数优化也有一定考察,请保证你的时间常数是比较优秀的。此外,由于评测 I/O 量较大,常数较大的做法可能会在评测时间结果上产生波动,请不要频繁提交,从而得到相对准确的评测结果。