问题 5662 --元宵灯笼5662: 元宵灯笼
时间限制: 2 Sec 内存限制: 256 MB
提交: 8 解决: 6
[提交][状态][命题人:]题目描述
元宵佳节,道路两旁挂满了灯笼。
现在有一条道路,左右两侧各有 n 个灯笼。左侧的第 i 个灯笼高度为 a[i] ,右侧的第 i 个灯笼高度为 b[i] 。
小明想通过若干次操作,使得左右灯笼的某一区间 [l,r] 内的高度对应一致,即 ∀i∈[l,r] ,a[i]=b[i] 。操作方式如下:
1. 选择 [l,r] 区间内的一个长度为偶数的标记序列 p[1],p[2],...,p[k] (k为偶数),满足 l≤p[1]<p[2]<...<p[k]≤r 。
2. 将 a[p[1]],a[p[3]],...,a[p[k-3]],a[p[k-1]] 都增加 1 ,将 b[p[2]],b[p[4]],...,b[p[k-2]],b[p[k]] 都增加 1 。
共有 q 次询问,每次询问给定区间 [l,r] ,求最少需要多少次操作,使得左右灯笼的区间 [l,r] 内的高度对应一致。若无解,则输出 -1 。
每组询问间相互独立。
输入
第一行包含两个正整数 n,q (2≤n≤10^5, 1≤q≤10^5) ,表示一侧的灯笼数量和询问数。
第二行包含 n 个整数 a[1],a[2],...,a[n] ,表示左侧的灯笼高度。
第三行包含 n 个整数 b[1],b[2],...,b[n] ,表示右侧的灯笼高度。
接下来 q 行,每行包含两个整数 l,r (1≤l<r≤n) ,表示询问的区间的端点。
输出
对于每组询问,输出一行,包含一个整数,表示最少需要多少次操作。若无解,则输出 -1 。
提示
样例解释
对于第一组数据 [2,6] ,可以选择编号序列 p[]={2,3,5,6} 进行操作,操作后
a[]={0,2,2,9,4,2,7,5}, b[]={2,2,2,9,4,2,5,8} ,满足条件。
对于第二组数据 [1,7] ,可以一次选择以下序列进行操作:
p[]={1,3,5,6}
p[]={1,7}
p[]={2,7}
对于第三组数据 [2,4] ,可以选择编号序列 p[]={2,3} 进行操作。
对于第四、五组数据,无法使得左右灯笼的区间 [l,r] 内的高度对应一致。
来源
[提交][状态]