摘要: 首先要注意核心代码int find(int i){ if(i == fa[i]) return fa[i]; int tt = find(fa[i]); num[i] = (num[i] + num[fa[i]]) % 3; fa[i] = tt; return fa[i];}不能写成int fin... 阅读全文
posted @ 2014-10-17 23:15 icodefive 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 有的堡垒攻克需要攻克另一个堡垒,形成一个森林,最多攻克m个堡垒,求获得宝物的最大价值。1,以0做根将森林形成树;2,用背包计算当前节点下需要攻克k个堡垒能获得的宝物最大价值,但是注意同一个根节点的情况不能够先后放入背包,否则会有比如1节点选2个和选三个形成了选5个,也就是某些节点重复计算了。所以要在... 阅读全文
posted @ 2014-10-17 13:23 icodefive 阅读(213) 评论(0) 推荐(0) 编辑