#P11891. [XRCOI Round 1] B. 稻花香里说丰年

[XRCOI Round 1] B. 稻花香里说丰年

题目背景

增加形式化题意。

稻花香里说丰年,听取蛙声一片。

题目描述

稻田里有 00, 11 两种类型的青蛙。他们排成了 a,ba,b 两列。

Genius_Star 发现了这些青蛙,所以他决定将这两个青蛙队列分别划分为起止点相同的任意段,定义某一段的整齐度 TT 为:

T(l,r)=i=lr[aibi]T(l,r) = \sum_{i=l}^r [a_i \ne b_i]

其中 :[A][A] 表示若 AA 命题为真则为 11,否则为 00

则对于段 [l,r][l,r] 的带给 Genius_Star 的开心值为

W(l,r)=T(l,r)×(A(l,r)+B(l,r))W(l,r) = T(l,r) \times \Big(A(l,r) + B(l,r) \Big)

其中:

A(l,r)A(l,r) 表示在 aa 序列的 [l,r][l,r] 区间中包含的 0101 类型的子序列数量。

B(l,r)B(l,r) 表示在 bb 序列的 [l,r][l,r] 区间中包含的 1010 类型的子序列数量。

一个分段方案带给 Genius_Star 的开心值是所有小段带给他的开心值之和,你需要求出所有的分段方案带给他的开心值之和 ss

设分为了 kk 段,第 ii 段为 [li,ri](liri)[l_i, r_i](l_i \le r_i),需要满足:

  • l1=1,rk=nl_1 = 1, r_k = n

  • i[1,k),ri+1=li+1\forall i \in[1, k), r_i + 1 = l_{i + 1}

则若两个分段的方案不同,当且仅当两个方案分的段数不同或者存在一个 ii 使得 [li,ri][li,ri][l_i, r_i] \ne[l'_i, r'_i]

由于 Genius_Star 不能过于开心,你还需要将答案对 109+710^9+7 取模。

形式化题意

给定一个两个序列 a,ba,b 。定义

  • T(l,r)T(l,r) 为在区间 [l,r][l,r]aibia_i\neq b_i 的个数。

  • A(l,r)A(l,r) 表示 aa 序列在 [l,r][l,r] 区间中的 0101 类型子序列个数。

  • B(l,r)B(l,r) 表示 bb 序列在 [l,r][l,r] 区间中的 1010 类型子序列个数。

  • W(l,r)=T(l,r)×(A(l,r)+B(l,r)) W(l,r) = T(l,r) \times \Big(A(l,r) + B(l,r) \Big)

其中:xyxy 类型子序列表示从区间左端点开始向右顺次选择两个元素(不要求连续),其中,第一个数是 xx ,第二个数是 yy。两个子序列不同当且仅当 xxyy 所在位置不同。

现在你需要将两个序列划分成起止点相同的任意段,求所有划分方式的每段的 WW 之和。

由于答案可能很大,你需要将答案对 109+710^9+7 取模。

输入格式

第一行,两个正整数 n,opn,op

op=0op=0 时,则该测试点的 ai,bia_i,b_i 直接给出

  • 接下来 nn 行,每行两个整数 ai,bia_i,b_i

op=1op=1 时,则该测试点的 ai,bia_i,b_i特殊生成

  • 第二行共五个整数 x1,y1,z1,f1,f2x_1, y_1, z_1, f_1, f_2

  • 第三行共五个整数 x2,y2,z2,g1,g2x_2, y_2, z_2, g_1, g_2

fi,gi(i3)f_i,g_i(i \ge 3) 满足:

fi=(fi2×x1+fi1×y1+z1)mod264f_i = (f_{i-2} \times x_1 + f_{i-1} \times y_1 + z_1) \bmod 2^{64} gi=(gi2×x2+gi1×y2+z2)mod264g_i = (g_{i-2} \times x_2 + g_{i-1} \times y_2 + z_2) \bmod 2^{64}

那么:

  • aia_i 的值就是 fi164+3f_{\lfloor \frac{i-1}{64} \rfloor+3} 转化为二进制后从低位到高位第 (i1mod64)+1(i-1 \bmod 64)+1 位。

  • bib_i 的值就是 gi164+3g_{\lfloor \frac{i-1}{64} \rfloor+3} 转化为二进制后从低位到高位第 (i1mod64)+1(i-1 \bmod 64)+1 位。

上述数据生成方式仅是为了减少输入量大小,标准算法不依赖于该生成方式。

输出格式

输出共一行。一个整数 ss,表示所有的分段方案带给 Genius_Star 的开心值之和。

输入数据 1

3 0
1 0
1 1
0 0

输出数据 1

1

输入数据 2

5 0
0 1
1 0
0 1
1 1
1 1

输出数据 2

70

输入数据 3

4 0
0 1
1 0
0 1
1 0

输出数据 3

52

输入数据 4

5 1
1 1 0 1 1
1 1 1 1 1

输出数据 4

22

输入数据 5

10000 1
1 1 0 1 1
1 1 1 1 1

输出数据 5

559297012

提示

样例解释 #1:

只有按照 [1,3][1,3] 分段时,W(1,3)=1W(1,3)=1

样例解释 #4:

可以得到:

f1=1,f2=1,f3=2f_1=1,f_2=1,f_3=2 g1=1,g2=1,g3=3g_1=1,g_2=1,g_3=3

得到:

(f3)2=(00010)2(f_3)_2 = (00010)_2 (g3)2=(00011)2(g_3)_2 = (00011)_2

则:

a={0,1,0,0,0}a = \{0,1,0,0,0\} b={1,1,0,0,0}b = \{1,1,0,0,0\}

故答案为 2222

数据范围:

本题采用捆绑测试。

其中子任务 00 为样例,记 00 分。

Subtask 编号 nn opop 特殊性质 得分
11 100\leq 100 =0=0 55
22 104\leq 10^4 1010
33 106\leq 10^6 AA
44 BB
55 =1=1 2525
66 5×107\leq 5\times 10^7 4040

特殊性质 AAT(l,r)=rl+1T(l,r) = r-l+1

特殊性质 BB:有且仅有一个 xx 满足 axbxa_x \ne b_x

对于 100%100 \% 的数据,保证 1n5×107,1x1,x2,y1,y2,z1,z2,f1,f2,g1,g210181 \le n \le 5\times 10^7,1 \le x_1,x_2,y_1,y_2,z_1,z_2,f_1,f_2,g_1,g_2 \le 10^{18}