APIO2014 连珠线 ( beads)

题意

n n n个珠子,一开始只有一个珠子,随后的 n − 1 n-1 n1个珠子以如下方式之一加入:
1.直接向已有的珠子连一条红线;
2.在已有连红线的两个珠子之间的红线拆段,再分别向它们连一条线。
给出最后形成的树(不给出边的颜色),且每条边有权值,求蓝边权值和的最大值。

题解

原始想法:根据样例猜一下,是不是每个点都可连两条蓝边,保证蓝边不相交,树形DP一下即可?显然是错的(APIO题目哪有这么简单)。考虑什么情况不合法,通过乱画发现对于有主动连蓝边的两个点之间不能是非祖先后代关系,但这个条件也不好限制呀,然后越想越乱。
正解:其实刚才完全在为自己找麻烦了,这种时候一定是没有利用好题目的某些性质。再回到题面,考虑建树的过程,以一开始的节点为根(既然是树,依题意确定一个根肯定更好做),建红边就直接加儿子,建蓝边就把一对父子之间加入一个点,所以刚才乱七八糟的限制就变得清晰了:即蓝边只能连接型如fa-u-son,所以确定一个根后,树形DP即可。但我们不知道根是哪个,考虑O(1)换根,发现每次换只会影响到u和v的DP值,所以可以直接选1为根,再依次换根即可。
总结:本题的突破口在于以题目中那个第一个点为根(如果能从题目出发去想,其实不难想到),在这之后的想法都十分清晰自然,不要总是大概理解题意之后就不加分析随便乱想,再加上本来就差的思考力,必然gg。(感觉这样下去APIO要暴零了啊)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值