#156. 最小伤害
最小伤害
【题目描述】
有n+1个箱子从左往右排成一行,编号从0至n 。一开始你在第0个箱子,你的目标是到达第n个箱子。你可以通过跳跃来完成目标,每一步你的跳跃距离不能超过L,你可以选择向左跳,也可以选择向右跳,你任何时刻都不能跳出边界。每当你落在第i个箱子上面,你会受到T[i]点伤害值。求为了完成任务,至少会受到多少伤害值。伤害值用如下的公式产生:
T[0] = 0
state = seed
for i = 1 to N:
state = (state * 1103515245 + 12345) % 2^31
T[i] = 1 + (state % M)
【输入格式】
多组测试数据。
第一行,一个整数G,表示有G组测试数。1<=G<=3。
每组测试数据格式如下:
一行,4个整数:n, L, seed,M。
$1<=n<=500000,1<=L<=500000,0<=seed<2^{31}, 1<=M<=10^9$。
【输出格式】
共G行,每行一个整数。
【输入样例】
3
8 3 47 10
100 1 47 123456789
5 5 12345 54321
【输出样例】
17
5835166389
46038
统计
相关
在下列比赛中: