[CF894E]Ralph and Mushrooms

Ralph and Mushrooms

题解

首先,我们可以对这个图根据连通分量进行缩点,因为当进入一个连通分量后,其中的每个点都是可以被采完的。

于是,我们可以先将每条边对当前块的贡献维护出来加到块中,每个块的权值为

t= \left \lfloor \sqrt{2x+\frac{1}{4}}-\frac{1}{2} \right \rfloorcalc(x)= (t+1)x-\frac{t(t+1)(2t+1)}{6}

之后再通过拓扑序将最大的一条路径求出来即可。

源码

#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000005
typedef long long LL;
typedef unsigned long long uLL;
const LL INF=0x7f7f7f7f7f7f7f7f;
con
posted @ 2022-04-06 19:35  StaroForgin  阅读(16)  评论(0)    收藏  举报  来源