CF1599E.Two Arrays

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given two integer arrays of length NN , A1A1 and A2A2 . You are also given QQ queries of 4 types:

1 k l r x: set Aki:=min(Aki,x)Ak_i:=min(Ak_i, x) for each lirl \leq i \leq r .

2 k l r x: set Aki:=max(Aki,x)Ak_i:=max(Ak_i, x) for each lirl \leq i \leq r .

3 k l r x: set Aki:=Aki+xAk_i:=Ak_i+x for each lirl \leq i \leq r .

4 l r: find the (i=lrF(A1i+A2i))%(109+7)(\sum_{i=l}^r F(A1_i+A2_i)) \% (10^9+7) where F(k)F(k) is the kk -th Fibonacci number ( F(0)=0,F(1)=1,F(k)=F(k1)+F(k2)F(0)=0, F(1)=1, F(k)=F(k-1)+F(k-2) ), and x%yx \% y denotes the remainder of the division of xx by yy .

You should process these queries and answer each query of the fourth type.

输入格式

The first line contains two integers NN and QQ . ( 1N,Q5×1041 \leq N, Q \leq 5 \times 10^4 )

The second line contains NN integers, array A11,A12,A1NA1_1, A1_2, \dots A1_N . ( 0A1i1060 \leq A1_i \leq 10^6 )

The third line contains NN integers, array A21,A22,A2NA2_1, A2_2, \dots A2_N . ( 0A2i1060 \leq A2_i \leq 10^6 )

The next QQ lines describe the queries. Each line contains 5 or 3 integers, where the first integer denotes the type of the query. ( k{1,2}k \in \{1, 2\} , 1lrN1 \leq l \leq r \leq N )

For queries of type 1 and 2, 0x1090 \leq x \leq 10^9 holds.

For queries of type 3, 106x106−10^6 \leq x \leq 10^6 holds.

It is guaranteed that after every query each number in arrays A1A1 and A2A2 will be nonnegative.

输出格式

Print the answer to each query of the fourth type, in separate lines.

输入输出样例

  • 输入#1

    3 4
    1 0 2
    2 1 0
    4 1 3
    3 2 2 2 3
    1 1 1 3 0
    4 1 3

    输出#1

    4
    4
  • 输入#2

    5 4
    1 3 5 3 2
    4 2 1 3 3
    4 1 3
    4 2 5
    2 1 2 4 6
    4 2 4

    输出#2

    18
    26
    68

说明/提示

In the first example: The answer for the first query is F(1+2)+F(0+1)+F(2+0)=F(3)+F(1)+F(2)=2+1+1=4F(1 + 2) + F(0 + 1) + F(2 + 0) = F(3) + F(1) + F(2) = 2 + 1 + 1 = 4 . After the second query, the array A2A2 changes to [2,4,0][2, 4, 0] . After the third query, the array A1A1 changes to [0,0,0][0, 0, 0] . The answer for the fourth query is F(0+2)+F(0+4)+F(0+0)=F(2)+F(4)+F(0)=1+3+0=4F(0 + 2) + F(0 + 4) + F(0 + 0) = F(2) + F(4) + F(0) = 1 + 3 + 0 = 4 .

In the second example: The answer for the first query is F(1+4)+F(3+2)+F(5+1)=F(5)+F(5)+F(6)=5+5+8=18F(1 + 4) + F(3 + 2) + F(5 + 1) = F(5) + F(5) + F(6) = 5 + 5 + 8 = 18 . The answer for the second query is F(3+2)+F(5+1)+F(3+3)+F(2+3)=F(5)+F(6)+F(6)+F(5)=5+8+8+5=26F(3 + 2) + F(5 + 1) + F(3 + 3) + F(2 + 3) = F(5) + F(6) + F(6) + F(5) = 5 + 8 + 8 + 5 = 26 . After the third query, the array A1A1 changes to [1,6,6,6,2][1, 6, 6, 6, 2] . The answer for the fourth query is F(6+2)+F(6+1)+F(6+3)=F(8)+F(7)+F(9)=21+13+34=68F(6 + 2) + F(6 + 1) + F(6 + 3) = F(8) + F(7) + F(9) = 21 + 13 + 34 = 68 .

首页