2024省选联测13
A. 树上横跳
有一棵 \(n\) 个点的普普通通的有根树(以 \(1\) 号点为根)。
这棵树每条边有边权。乐乐打算在这棵树上来回横跳,但乐乐每次只能从一个节点 \(u\) 跳到它的子孙 \(v\),代价为 \(u\times dist(u,v)\)。
\(u\) 是 \(v\) 的子孙当且仅当 \(u\) 在 \(v\) 到根节点的路径上。
乐乐提出了 \(m\) 个询问,每次询问两个点 \(s,\),是否能从 \(s\) 到 \(t\),如果能到则最小代价为多少。
类似楼房重建。
使用 ST 表存储往上跳的时候的最小节点和当前答案。
每次合并 \(L,R\) 区间的答案,\(L\) 区间答案不改变。
- 若 \(min_L\le min_R\),答案为 \(min_L\times sum_R\)。
- 若 \(min_L>min_R\),考虑两种情况。
-
- 若 \(min_L\le min_R_L\),答案为 \(min_L\times sum_R_L+merge()\)。
B. 定价
为了赚更多的钱,这个游戏的主线剧情分为 \(n\) 个 \(\text{DLC}\) 出售。你打算发行 \(n\) 种预购套装,第 \(i(1\le i\le n)\) 种套装包含前 \(i\) 个 \(\text{DLC}\) 。当然,第 \(i(2\le i\le n)\) 个套装的价格需要严格高于第 \(i-1\) 个套装的价格,并且第 \(1\) 个套装的价格大于 \(0\) 。现在你需要确定这 \(n\) 个价格。
所有物品的价格都只能为 \(m\) 位二进制非负整数。此外,政府限制了每个价格的某些二进制位必须为 \(0\)。为了体现你是良心开发商,你需要求出所有套装的价格和的最小值。由于这个值可能太大了,你只需要输出它 \(\bmod 10^9+7\) 后在十进制下的值。
天有不测风云,政策瞬息万变。一开始政府限制了每个价格的每个二进制位都必须为 \(0\),后来随着时间推移,政府可能会允许某个价格的某个二进制位可以为 \(1\),或重新限制某个二进制位必须为 \(0\),你必须高效地对政策的变化作出反应,并随时支持求出价格和的最小值。