「SvR-1」Problem

题目背景

小 L 打颓被 nodgd 发现,于是他开始做题了。

题目描述

他的 DS 非常菜,于是他把一共 $n$ 道 DS 题加到了自己的计划题单里,其中第 $i$ 道题的有趣程度为 $a_i$。 由于他并不精通 DS,他发现他在做一些题目之前需要先做另一些题目。这样的关系共有 $n - 1$ 组,他还发现每道题都出现在了这些关系中且没有重复。 他发现 $\forall 2 \leq i \leq n$,第 $i$ 题和第 $fa_i$ 题间存在上文所述的关系,且 $1 \leq fa_i < i$。**他必须先做第 $fa_i$ 题后才能做第 $i$ 题**。 他发现,如果他在做一道题之前高兴程度为 $k$,则他做完第 $i$ 题后,他的高兴程度便会变为 $\min(k, a_i)$。**他做题前的高兴程度为无穷大**。 他想问你**在必须先做第 $1$ 题且不能重复做某一道题**的情况下,他在做题的全过程中每做完一道题后**高兴程度之和的最大值**。

输入输出格式

输入格式


第一行,两个整数 $n, seed$; 由于输入量较大,我们采用如下方式生成 $a_i, fa_i$。 C++: ```cpp typedef unsigned int uint; inline uint get_next(uint &seed){ seed ^= seed << 13; seed ^= seed >> 17; seed ^= seed << 5; return seed; } int main(){ // ... for (int i = 1; i <= n; i++){ a[i] = get_next(seed); } for (int i = 2; i <= n; i++){ fa[i] = get_next(seed) % (i - 1) + 1; } // ... return 0; } ``` 使用其他语言的选手请参考「**说明/提示**」中的「**伪代码参考**」。

输出格式


一行,一个整数,表示所求的值。

输入输出样例

输入样例 #1

6 114514

输出样例 #1

14907285111

说明

#### 样例 #1 解释 在该组样例中 $a = [3398922311, 3077554952, 2933028207, 4018360144, 1263042788, 835814542]$,$fa_2 = fa_3 = fa_4 = 1$,$fa_5 = fa_6 = 2$。 最优方案之一:依次做第 $1, 4, 2, 3, 5, 6$ 题,最大值为 $3398922311 + 3398922311 + 3077554952 + 2933028207 + 1263042788 + 835814542 = 14907285111$。 #### 伪代码参考 $$ \def{\b}#1{ \textbf{ #1 } }\def{\t}#1{\text{ #1 }}\def{\s}{\quad}\def{\f}#1{\textsf{ #1 }} \def{\l}{\underline{\kern{300pt}}\\[-10pt]} \def{\r}{\overline{\underline{\kern{300pt}}}} \begin{aligned} &\r\\&\b{Algorithm:}\t{Get }a_i,fa_i\\[-13pt]&\l\\ &\begin{aligned} \f{1.}&\b{function} \b{\color{red}unsigned int} \t{getnext}(\b{\color{red}unsigned int}\&seed): \\ \f{2.}&\s seed=seed\oplus\t{left}(seed,13)\\ \f{3.}&\s seed=seed\oplus\t{right}(seed,17)\\ \f{4.}&\s seed=seed\oplus\t{left}(seed,5) \\ \f{5.}&\s \b{return} seed\\ \f{6.}&\b{function} \t{main}(n):\\ \f{7.}&\s \b{for} i \b{from} 1 \b{to} n \b{step}1\\ \f{8.}&\s\s a_i=\t{getnext}(seed)\\ \f{9.}&\s \b{end for} \\ \f{10.}&\s \b{for} i \b{from} 2 \b{to} n \b{step}1\\ \f{11.}&\s\s fa_i=\t{getnext}(seed)\bmod(i-1)+1\\ \f{12.}&\s \b{end for} \\ \end{aligned}\\[-12pt] &\r \end{aligned} $$ 其中 $\text{left}(x,d)$ 和 $\text{right}(x,d)$ 分别表示将 $x$ 左移或右移 $d$ 位。 #### 数据规模与约定 **本题自动开启捆绑测试和 O2 优化。** $$ \newcommand{\arraystretch}{1.5} \begin{array}{c|c|c}\hline\hline \textbf{Subtask} & \bm{n \leq} & \textbf{分值} \\\hline \textsf{1} & 10 & 10 \\\hline \textsf{2} & 10^4 & 20 \\\hline \textsf{3} & 10^6 & 20 \\\hline \textsf{4} & \text{无特殊限制} & 50 \\\hline\hline \end{array} $$ 对于 $100\%$ 的数据,$1 \leq n \leq 10^7$,$0 \leq seed < 2^{32}$。