CF809C Find a car

题目描述

在餐厅度过了一个美好的夜晚后,到了回家的时间。Leha 作为一名真正的绅士,主动提出送 Noora 回家。女孩当然愉快地同意了。然而突然出现了一个问题:Leha 在餐厅旁巨大的停车场找不到自己的车了,于是他决定向守夜人寻求帮助。 形式化地讲,停车场可以表示为一个 $10^{9}×10^{9}$ 的矩阵。矩阵的每个格子中正好停着一辆车,每辆车都有一个属于自己的机器编号,这个编号是正整数。我们用 $1$ 到 $10^{9}$ 的整数从左到右为矩阵的列编号,从上到下为行编号。巧合的是,对于每一个格子 $(x, y)$,该格子中车辆的编号等于在所有 $1\leq i < x$ 与 $1 \leq j < y$ 的格子 $(i, y)$ 和 $(x, j)$ 里没有出现过的最小正整数。 下图是停车场左上角 $5×5$ 的一个片段: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF809C/ae332bca5d9d01e82f5b508b0b8ed89c69aaabc8.png) Leha 想要向守夜人提出 $q$ 个请求,以帮助他找到自己的汽车。每个请求由五个整数 $x_{1}, y_{1}, x_{2}, y_{2}, k$ 表示。守夜人需要统计所有满足 $x_{1} \leq x \leq x_{2}, y_{1} \leq y \leq y_{2}$ 的格子 $(x, y)$,如果该格子的车辆编号不超过 $k$,则将该编号加到这次请求的答案上。每一个请求,Leha 都希望守夜人告诉他这个结果之和。由于结果可能很大,请对 $10^9+7$ 取模后输出。 这些请求对于守夜人来说似乎很难完成。请你帮助守夜人回答所有 Leha 的请求。

输入格式

第一行包含一个整数 $q$ $(1\leq q\leq 10^4)$,表示 Leha 的请求数量。 接下来的 $q$ 行,每行包含五个整数 $x_{1},y_{1},x_{2},y_{2},k$ $(1\leq x_{1}\leq x_{2}\leq 10^{9},1\leq y_{1}\leq y_{2}\leq 10^{9},1\leq k\leq 2\cdot 10^9)$,代表 Leha 的每一个请求的参数。

输出格式

输出恰好 $q$ 行,每行一个整数,第 $i$ 行表示第 $i$ 个请求的答案。

说明/提示

让我们分析所有的请求,在每个例子中所选的子矩阵会用蓝色高亮显示。 在第一个请求中($k=1$),Leha 只询问了停车场左上角的一个格子。在该格子中车辆编号为 $1$,因此答案为 $1$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF809C/d2875ff3db76503beed44fa5c085d5d3869ee951.png) 在第二个请求中($k=5$),符合条件的编号有 $4,1,2,3,2,1$,所以答案为 $4+1+2+3+2+1=13$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF809C/ede1b276e2f90d48fe9a9d6eefb80fff17357cda.png) 在第三个请求中($k=10000$),Leha 询问了停车场左上角 $5\times 5$ 的区域。由于 $k$ 足够大,所以答案是 $93$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF809C/34d4b59403122816fc368bbef865be8d24e23c43.png) 在最后一个请求中($k=2$),没有任何符合条件的车辆编号,因此答案为 $0$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF809C/c06af08c1e07e51a52a8f851e5994e563f76af08.png) 由 ChatGPT 5 翻译