DTOJ 4868. 极乐迪斯科

题意

作为瑞瓦肖57分局最优秀的警探,你被派到马丁内斯打击犯罪。马丁内斯的一些建筑物上安装了 m m m个摄像头。你明白,普通人并不会因此受到多少保护,这些摄像头是保护*资本主义*的。作为一个信仰共产主义的战士,你决定滥用职权,拆掉一些摄像头。马丁内斯的街道是一棵 n n n个点的有根树,每个点是一个商店,豪宅之类的重要建筑物,建筑物之间的边就是街道,一个摄像头可以监控子树中所有和它的距离 ≤ d i \leq d_i di的建筑物。拆一个摄像头是不小的劳动,会减少 c i c_i ci的快乐度。而一个毫无监视的重要建筑物会给予你 v i v_i vi的快乐度。你想知道,你最大能获得多少快乐度。

1 ≤ f i < i 1\leq f_i<i 1fi<i

1 ≤ x i ≤ n 1\leq x_i\leq n 1xin

0 ≤ d i ≤ n 0\leq d_i\leq n 0din

1 ≤ c i , v i ≤ 1 0 9 1 \leq c_i,v_i\leq10^9 1ci,vi109

n , m ≤ 5 × 1 0 5 n,m\leq5\times10^5 n,m5×105

数据点n,m性质
1,2 ≤ 20 \leq 20 20
3,4,5,6 ≤ 200 \leq 200 200
7,8,9 ≤ 3000 \leq 3000 3000
10,11 ≤ 4 × 1 0 4 \leq 4\times10^4 4×104 d i ≤ 20 d_i\leq20 di20
12,13,14,15,16$ \leq 10^5$
17,18,19,20

题解

原本只会DP,设 f [ u ] [ i ] f[u][i] f[u][i] u u u子树内前 i i i层不考虑的最大价值,对于 u u u的子树,枚举一个距离之外的监控被拆除,加上子树的DP值,效率 O ( ∑ d e p i ) O(\sum_{}{dep_i}) O(depi)。但这个DP用长剖或线段树合并都难以优化,有一种比较大力的拆开分讨+线段树合并的做法,但显然不太适合我。

“这不就是模拟费用流板子吗”——slz
发现这有一个比较显然的最小割建图,先取所有点权,把起点与监控连监控价值的边,树上节点与终点连点权的边,有控制关系的监控和树上节点连正无穷的边,跑最大流减掉即可。考虑如何使流量最大,按照从后代到祖先的关系考虑每一个监控,那么该监控肯定要从有连边的节点中深度最大的开始选要选取,于是直接dfs时维护子树内以深度为下标的残余流量的线段树,在每个节点上计算答案并合并子树点的线段树即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值