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\),你必须高效地对政策的变化作出反应,并随时支持求出价格和的最小值。

posted @ 2024-01-21 21:58  Estelle_N  阅读(43)  评论(2编辑  收藏  举报