正式初二了
https://jzoj.net/senior/#main/show/2936
想法:
1设tree[x][0/1]表示在以i为根的子树中,与i相连的点有[0,1]个敌人的情况下,砍树的最少代价
tree[x][0]+=min(tree[y][0],tree[y][1]+len[x,y]);
tree[x][1]=min{tree[x][0]-min(tree[y][0],tree[y][1]+len[i])+min(tree[y][0],tree[y][1])}
2最大生成树,判断每个并查集是否有敌人,再考虑合并(贪心)
JZOJ2936. 【NOIP2012模拟8.9】逐个击破(2017.9B组)
最新推荐文章于 2020-10-05 21:14:22 发布