一棵像样的线段树
Time Limit: 1000 MS Memory Limit: 128 MB
设 xem 表示集合中最小的未出现的正整数, 如 xem{}=1,xem{1,3,4}=2.
定义
bi=xem{bi−ci,bi−ci+1,...,bi−1},i=1,2,...,n
特别的,b0=1.
给定 nn 和 c1,c2,...,cn,请你计算出 b1,b2,...,bn
Input
第一行一个整数 n (1≤n≤106)。
第二行 n 个用空格分隔的整数 c1,c2,...,cn保证 1≤ci≤i
Output
输出一行 n个用空格分隔的整数, 依次为 b1,b2,...,bn.
Sample input and output
Sample Input | Sample Output |
---|---|
6 1 2 3 1 3 4 |
2 3 4 1 2 5 |
首先搞清楚b[ i ]的生成规则,在b[ i-c1——i-1 ]中未出现的最小正整数;
可以发现b[ i ]的产生只于b[ i ]前面的数有关,与数组c无关
然后,不难发现当i-ci==0时,b[ i ]=b[ i-1 ]+ 1;(证明略)