bzoj#P2035. [2009国家集训队]数据读取问题
[2009国家集训队]数据读取问题
题目描述
平行宇宙,或者叫做多重宇宙论,这是一种在物理学里尚未被证实的理论。
我们假想,在某个事件点(以时间为轴)之后,宇宙的运行轨迹会出现许多可能,而这些可能的宇宙是平行的。举例来说,从我们现在存在的这个宇宙开始,每过一个时刻,宇宙就会分成很多个,在这些宇宙中,会有成为警察的你,会有成为总理的你,等等。而这些不同的宇宙是相互平行的,且在之后的发展中也是平行,不会相交。
现在我们进入正题。
我们正在使用计算机读数据,数据有 行,每行一个非负整数,我们需要 按如下方式读取数据:
- 首先读入第一个数,需要支付 的代价。
- 我们假设读入的数是 ,那么我们需要读入接下来 个数。
- 如果文件已经读完,则读入结束:否则我们接着再读一个数(需要支付 的代价),然后转 。
数据保证任何一个读入的 ,在他后面至少还有 个数字。显然按照上面的方法一定可以恰好读完数据,但是这么做支付的代价不一定是最小的,你可以修改读入的那个 ,可以把 修改为 ,或者 ,不过必须保证,值仍然是非负整数,且接下来有不少于 个数。而我们需要支付的代价就是 。
相信你已经猜到我们的问题了,那就是恰好读完所有数据,需要支付的最少代价是多少。
等等,似乎还缺了什么。没错,我们并不知道这些数据是什么,但我们知道这些数据可能是什么,就像薛定谔的猫。在没有读入这个数字之前,它什么都是,一旦读入了这个数,根据结果,我们就进入了不同的平行世界。
现在我将告诉你宇宙可能出现的轨迹,希望你计算出所有不同的结果(读完数据需要支付的最小代价)。
输入格式
第一行,读入一个整数 ,表示可能的事件的个数。
接下来 行,第 行描述第 个事件。第 个事件,将会告知这些参数:, 表示第 个事件的数据值是多少, 表示这个事件之后有多少种可能出现的事件,编号是 。
其中第 个事件,它的数据值一定是 ,因为这时第一个数还未读入。也就是说,第 个事件所相关的事件 ,就是读入的第一个数所有的可能值。且如果某个事件 ,那么这个所读入的数 ,就是数据中的最后一个数。
输出格式
输出 行, 是最终所有可能的不同宇宙的个数。
每行输出一个最小的代价值,按照代价值的大小,从小到大输出。
样例输入
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
数据规模与约定
对于 的数据,。
对于 的数据,。
另有 的数据,输出的个数 。
对于 的数据,。