ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

最近一些题的题解

2022-05-26 14:35:14  阅读:172  来源: 互联网

标签:siz cut dfrac 子树 fa 最近 题解 一些 mx


1. 摩尔庄园

用树形 dp 模拟网络流。

记 \(a\) 为 \(x\) 走向 \(fa(x)\) 的次数,\(b\) 为 \(fa(x)\) 走向 \(x\) 的次数,\(flw(x) = a - b\)。

这样在从 \(x\) 走向 \(fa\) 时:

  • 如果 \(flw(x) < 0\),表示有更多次从 \(fa\) 走向 \(x\),那么这一次费用为 \(-1\),表示和之前一次从 \(fa\) 走向 \(x\) 的费用抵消了(网络流的思路)。
  • 否则,无法抵消,费用为 \(1\)。

从 \(fa\) 走向 \(x\) 时是类似的。

从下往上进行 \(\rm Update\),计算从 \(x\) 到其子树中有食物的地方,费用最小是多少,并记录下那个点的编号。

每读入一只拉姆的位置,就计算其费用并更新图中的费用。

Code

2. Centroids

CF708C Centroids

一个优秀的性质是以重心为根时所有点的子树大小都不会超过 \(\dfrac{n}{2}\),因为根本身就是如此。

对于节点 \(u\),这时只有 \(u\) 上面的部分有可能超过 \(\dfrac{n}{2}\),那么最优策略是选择其中最大的不超过 \(\dfrac{n}{2}\) 的子树,把它接到 \(u\) 上,设这一部分的大小为 \(cut_u\),那么剩下的部分就是 \(n - siz_u - cut_u\),如果仍然大于 \(\dfrac{n}{2}\),那么无法成为重心;否则可以。

于是问题转为如何求 \(cut_u\)。

记录 \(mx_u\) 为 \(u\) 子树内(不包括 \(u\))最大的不超过 \(\dfrac{n}{2}\) 的子树大小,当从 \(u\) 转移到 \(v\) 时:

\[cut_u = \cases { \max(cut_u, n - siz_u), n - siz_u \le \dfrac{n}{2} \\ cut_u, \rm otherwise } \\ cut_v = \max(cut_u, mx_u) \]

但如果 \(v\) 的子树就是 \(u\) 的最大的不超过 \(\dfrac{n}{2}\) 的子树,这时 \(mx_u\) 是不能选的,所以我们应该记录最大值和次大值 \(mx_{u,0}, mx_{u, 1}\)。这样转移就变成了

\[cnt_v = \cases { \max(cut_u, mx_{u, 0}), siz_v \ne mx_{u, 0} \\ \max(cut_u, mx_{u, 1}), siz_v = mx_{u, 0} } \]

Code

3. 由乃与大母神原型和偶像崇拜

P3792 由乃与大母神原型和偶像崇拜

发现 \(n\) 个数的和容易重,但平方和就不好重。所以维护区间最小 \(mn\)、区间最大 \(mx\)、区间和 \(sum1\)、区间平方和 \(sum2\)。

首先判断 \(mn + len - 1\) 是否等于 \(mx\),然后求 \(\sum\limits_{i = mn}^{mx} i\) 是否等于 \(sum1\),\(\sum\limits_{i = mn}^{mx}i ^2\) 是否等于 \(sum2\)。

模数直接 $\rm unsigned\ long\ long $ 自然溢出,注意等差数列与平方和都要除一个数,把它乘到式子另一边去。

当然你怕不保险也可以加上立方和,这样就几乎卡不掉了(

Code

标签:siz,cut,dfrac,子树,fa,最近,题解,一些,mx
来源: https://www.cnblogs.com/mangoworld/p/Solution-Recent-Problem.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有