P6869 Putovanje – king_steph1209 – 博客园
P6869 Putovanje P6869 Putovanje – 洛谷 题意: n 个节点的树 按照编号从小到大访问每个节点 每次经过树边时需要收费,可购买单程票\(c_1\),或者多程票\(c_2\)供无限次使用 求最小费用 思路: 用几个例子观察 “按照编号从小到大访问每个节点” 先不看费用,只看这几个例子,经过的边有什么规律: 比如: 一条边被经过了几次? 总共遍历了多少条边?(重复遍历也要计数) e.g. 一开始想到了… 从1开始访问 每到一个节点 i 若这个节点为根的树 满足儿子均大于它,那么只需要走 \((size[i]-1) \times 2 -1\)步 (如果是还要回到根节点的话, \((size[i]-1) \times 2\) 满足儿子均小于它,那么一定需要走 \((size[i]-1) \times 2\) 步,回到该节点 有的儿子小于它,有的儿子大于它 … … 观察 图1,图3 图1:\(3→4\),经过的路径恰好是 ? \(3→lca(3,4)→4\) 图3:\(2→3\) 经过的路径是 ? \(2→lca(2,3)→3\) 更一般地,观察图3: \(1→2\) 经过的路径 \(5→6\) […]