bzoj#P2035. [2009国家集训队]数据读取问题

[2009国家集训队]数据读取问题

题目描述

平行宇宙,或者叫做多重宇宙论,这是一种在物理学里尚未被证实的理论。

我们假想,在某个事件点(以时间为轴)之后,宇宙的运行轨迹会出现许多可能,而这些可能的宇宙是平行的。举例来说,从我们现在存在的这个宇宙开始,每过一个时刻,宇宙就会分成很多个,在这些宇宙中,会有成为警察的你,会有成为总理的你,等等。而这些不同的宇宙是相互平行的,且在之后的发展中也是平行,不会相交。

现在我们进入正题。

我们正在使用计算机读数据,数据有 KK 行,每行一个非负整数,我们需要 按如下方式读取数据:

  1. 首先读入第一个数,需要支付 11 的代价。
  2. 我们假设读入的数是 xx,那么我们需要读入接下来 xx 个数。
  3. 如果文件已经读完,则读入结束:否则我们接着再读一个数(需要支付 11 的代价),然后转 22

数据保证任何一个读入的 xx,在他后面至少还有 xx 个数字。显然按照上面的方法一定可以恰好读完数据,但是这么做支付的代价不一定是最小的,你可以修改读入的那个 xx,可以把 xx 修改为 x+yx+y,或者 xyx-y,不过必须保证,值仍然是非负整数,且接下来有不少于 x±yx \pm y 个数。而我们需要支付的代价就是 yy

相信你已经猜到我们的问题了,那就是恰好读完所有数据,需要支付的最少代价是多少。

等等,似乎还缺了什么。没错,我们并不知道这些数据是什么,但我们知道这些数据可能是什么,就像薛定谔的猫。在没有读入这个数字之前,它什么都是,一旦读入了这个数,根据结果,我们就进入了不同的平行世界。

现在我将告诉你宇宙可能出现的轨迹,希望你计算出所有不同的结果(读完数据需要支付的最小代价)。

输入格式

第一行,读入一个整数 NN,表示可能的事件的个数。 接下来 NN 行,第 i+1i+1 行描述第 ii 个事件。第 ii 个事件,将会告知这些参数:x,m,a1,a2,a3,x,m,a_1,a_2,a_3,\ldotsxx 表示第 ii 个事件的数据值是多少,mm 表示这个事件之后有多少种可能出现的事件,编号是 a1,a2,a3,a_1,a_2,a_3,\ldots
其中第 11 个事件,它的数据值一定是 1-1,因为这时第一个数还未读入。也就是说,第 11 个事件所相关的事件 a1,a2,a3,a_1,a_2,a_3,\ldots,就是读入的第一个数所有的可能值。且如果某个事件 m=0m=0,那么这个所读入的数 xx,就是数据中的最后一个数。

输出格式

输出 MM 行,MM 是最终所有可能的不同宇宙的个数。

每行输出一个最小的代价值,按照代价值的大小,从小到大输出。

样例输入

10
-1 2 2 3
0 0
2 3 4 5 6
1 1 7
0 2 8 9
1 1 10
0 0
0 0
0 0
0 0

样例输出

1
1
1
1
1

数据规模与约定

对于 20%20\% 的数据,N2×103N \leq 2\times10^3
对于 60%60\% 的数据,N2×105N \leq 2\times10^5
另有 20%20\% 的数据,输出的个数 M50 M \leq 50
对于 100%100\% 的数据,N106N \leq 10^6