时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld
题目描述
小睿睿有n个柱子,第i根柱子的高度为h[i],砍掉第i个柱子的花费为cost[i],在两个柱子i,j间砍掉其之间的柱子造桥的花费为
有m组询问,每次给定x,y,询问如果将第x根柱子的高度改为y,从第1根柱子修桥到x的最小花费
第1个和第x个柱子不能被砍
询问间相互独立,不会互相影响
输入描述:
第一行2个整数n,m
第二行n个整数,表示第i个柱子的高度为h[i]
第三行n个整数,表示砍掉第i个柱子的花费为cost[i]
接下来m行,每行2个整数X,y,题目描述中的x = ( ( X xor lastans ) mod n + n ) mod n + 1 ,其中lastans为上一个询问的答案,其初始值为0,mod为取模
输出描述:
共m行,每行一个整数,表示对应询问的答案
示例1
说明
解码后x为1,高度差为0且不需要砍掉柱子,答案为0
示例2
输入
复制
5 5
3673 6707 8390 4852 4421
-7764 4211 -1276 7805 -8977
7850 6717
3126 2134
2477 9665
4958 8485
6646 3257
输出
复制
0
2368521
0
12046670
177267
说明
解码后的询问分别为:
x:1 y:6717
0
x:2 y:2134
2368521
x:1 y:9665
0
x:4 y:8485
12046670
x:3 y:3257
177267
备注:
对于100%的数据,