haoi2015专题

BZOJ 4033. [HAOI2015]树上染色(树形DP,边贡献)

Description 有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。 问收益最大值是多少。 Input 第一行两个整数N,K。 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to)。 输入保

BZOJ4033[HAOI2015] 树上染色 解题报告【树上DP】

Description 有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。 问收益最大值是多少。 Input 第一行两个整数N,K。 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to)。

【题解】「HAOI2015」树上操作(述链剖分)

题面 【题目描述】 有一棵点数为 N N N 的树,以点 1 1 1为根,且树点有边权。然后有 M M M个操作,分为三种: 操作 1 1 1 :把某个节点 x x x 的点权增加 a a a 。 操作 2 2 2 :把某个节点 x x x 为根的子树中所有点的点权都增加 a a a 。 操作 3 3 3 :询问某个节点 x x x 到根的路径中所有点的点权和。 【输入】 第一

【数据结构 树 树链剖分】luogu_3178 [HAOI2015]树上操作

题意 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 思路 一道树链剖分裸题,这次是默写板子。 代码 #include <cstdio>struct segmentTree

【HAOI2015】bzoj4037 数字串拆分

Description 你有一个长度为n的数字串。定义f(S)为将S拆分成若干个1~m的数的和的方案数,比如m=2时,f(4)=5,分别为4=1+ 1+1+1你可以将这个数字串分割成若干个数字(允许前导0),将他们加起来,求f,并求和。比如g(123)=f(1+2+3) +f(1+23)+f(12+3)+f(123)。已知字符串和m后求答案对998244353(7×17×223+1,一个质

BZOJ 4034 [HAOI2015]树上操作

Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 Input 第一行包含两个整数 N, M 。表示点数和操作数。接下来一行 N 个整数,表