Differencia

TimeLimit:10000MS  MemoryLimit:65536KB
64-bit integer IO format:%I64d
未提交 | 登录后收藏
Problem Description
Professor Zhang has two sequences $a_1,a_2,...,a_n$ and $b_1,b_2,...,b_n$. He wants to perform two kinds of operations on the sequences:

1. + $l$ $r$ $x$: set $a_i$ to $x$ for all $l \le i \le r$.
2. ? $l$ $r$: find the number of $i$ such that $a_i \ge b_i$ and $l \le i \le r$.
Input
There are multiple test cases. The first line of input contains an integer $T$, indicating the number of test cases. For each test case:

The first line contains four integers $n$, $m$, $A$ and $B$ $(1 \le n \le 10^5, 1 \le m \le 3000000, 1 \le A, B \le 2^{16})$ -- the length of the sequence, the number of operations and two parameters.

The second line contains $n$ integers $a_1, a_2, ..., a_n$ $(1 \le a_i \le 10^9)$. The third line contains $n$ integers $b_1, b_2, ..., b_n$ $(1 \le b_i \le 10^9)$.

As there are too many operations, the $m$ operations are specified by parameters $A$ and $B$ given to the following generator routine.


int a = A, b = B, C = ~(1<<31), M = (1<<16)-1;
int rnd(int last) {
a = (36969 + (last >> 3)) * (a & M) + (a >> 16);
b = (18000 + (last >> 3)) * (b & M) + (b >> 16);
return (C & ((a << 16) + b)) % 1000000000;
}


For the $i$-th operation, first call rnd(last) three times to get $l$, $r$ and $x$ (i.e. l = rnd(last) % n + 1, r = rnd(last) % n + 1, x = rnd(last) + 1). Then if $l > r$, you should swap their value. And at last, the $i$-th operation is type ?, if $(l+r+x)$ is an even number, or type + otherwise.

Note: $last$ is the answer of the latest type ? operation and assume $last = 0$ at the beginning of each test case.
Output
For each test case, output an integer $S=(\sum\limits_{i=1}^{m}{i \cdot z_i}) \text{ mod } (10^9 + 7)$, where $z_i$ is the answer for $i$-the query. If the $i$-th query is of type +, then $z_i=0$.
SampleInput
3
5 10 1 2
5 4 3 2 1
1 2 3 4 5
5 10 3 4
5 4 4 2 1
1 2 3 4 5
5 10 5 6
5 4 5 2 1
1 2 2 4 5
SampleOutput
81
88
87
Submit
题目统计信息详细
总AC数1
通过人数1
尝试人数2
总提交量3
AC率33.33%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: