您的位置:首页 > 编程语言 > C语言/C++

JZOJ2936. 【NOIP2012模拟8.9】逐个击破(2017.9B组)

2017-09-02 15:01 302 查看
正式初二了

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最大生成树,判断每个并查集是否有敌人,再考虑合并(贪心)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 x