给定两个长度为n的整数序列B=[b1,..,bn],C=[c1,….,cn]。对于长度为n的非负整数序列D=[d1,….,dn],设S(D)为所有满足di=0的下标i的集合,定义f(D)= ∑i∈s(D)di, g(D)=∏i∈s(D)ci。特别地,若 S(D)为空,则f(D)=0,g(D)=1. 小L有一个长度为n的正整数序列A=[a1,...,a]。小乚可以对序列 A做如下修 改: 。选择序列 A的两个相邻的下标i,j(即1≤i,j≤n且|-j|=1),若ai≤aj则将aj改为aj-ai,同时将ai改为 0。 小L可以进行任意多次修改操作,也可以不进行任何修改。对于所有序列A通过以上修改操作可以得到的序列D,小工想求出f(D)的最大值以及g(D)之和,请你帮助他求出这两个值。形式化地,记T(A)为序列 A通过以上修改操作可以得到的所有序列的集合,你需要求出 maxpeD∈T(A)以及 ∑D∈T(A)g(D)。其中,由于∑D∈T(A)g(D)可能较大,你只需要求出其对1,000,000,007 取模后的结果。
从文件 sequence.in 中读入数据 本题包含多组测试数据。 输入的第一行包含两个非负整数c,t,分别表示测试点编号与测试数据组数。c=0表示该测试点为样例。 接下来依次输入每组测试数据,对于每组测试数据: 第一行包含一个正整数n,表示序列长度。 第二行包含n个正整数a1,...,an,表示序列A。 第三行包含n个整数b1,...,bn,表示序列 B。 第四行包含n个正整数 c1,...,cn,表示序列C。
输出到文件sequence.out中。 对于每组测试数据,仅输出一行,其中包含两个整数,分别表示maxD∈T(A)f(D)以及 ∑D∈T(A)g(D)对 1,000,000,007 取模后的结果。注意:maxD∈T(A)f(D)不需要对1.000.000.007 取模。 本题包含两个小问,正确回答其中任意一个小问均可获得部分分数。具体评分规则请参见【评分方式】。
0 3 3 5 6 6 3 6 9 1 2 3 6 1 1 4 5 1 4 -1 1 -1 1 -2 2 1 1 1 1 1 1 8 4 2 4 2 2 2 4 4 -2 4 9 -3 4 8 7 8 1 1 1 1 1 1 1 1
15 10 1 18 37 48
【样例1解释】 该样例共包含三组测试数据。 对于第一组测试数据,可以得到以下4个序列: D=[5,6,6],f(D)=0,g(D)=1; D=[0,1,6],f(D)=3,g(D)=1; D=[5,0,0],f(D)=6+9=15,g(D)=2x3=6; D=[0,0,5],f(D)=3+6=9,g(D)=1x2=2。 故 maxxD∈T(A)f(D)=max{0,3,15,9}=15,∑D∈T(A)g(D)=1+1+6+2=10.
【样例 2】 见选手目录下的sequence/sequence2.in与sequence/sequence2.ans. 该样例满足测试点3,4的约束条件。
【样例 3】 见选手目录下的seguence/sequence3.in与sequence/sequence3.ans. 该样例满足测试点5,6的约束条件。
【样例 4】 见选手目录下的sequence/sequence4.in与sequence/sequence4.ans该样例满足测试点7的约束条件。
【样例 5】 见选手目录下的sequence/sequence5.in与sequence/sequence5.ans. 该样例满足测试点11,12的约束条件。
【样例 6】 见选手目录下的sequence/sequence6.in与sequence/sequence6.ans. 该样例满足测试点16~18的约束条件。
【数据范围】