Codeforces 894E
题意:给出$n$个点和$m$条有向边和出发点$fr$,求从$fr$出发可重复走的最大边权和,其中一条边如果走了一次边权就会减去当前走的次数,比如$w=56$,走过一次以后$w=56-1=55$,走过两次以后$w=56-1-2=55-2=53$,边权扣到0为止,0边权的边亦可以走。
考虑如果图中有一个强连通分量,那么这个强连通分量的所有边都可以走完(所有边权都为0),所以考虑缩点。一个强连通分量的所有对答案贡献转为这个 强连通分量点 的点权。
如何计算边对答案的贡献? 可以二分解决,但是我这里运用了离线,先把所有边权存下来排序,然后一直进行$1+2+3+…$来决定每条边能过多少次及贡献。
然后新图就是一个DAG,在DAG上求个最长路即可,但是这幅图既有边权又有点权,所以不要忘记加上点权。
(btw: 人生第一题CFR div2E)
Codeforces Submission