P2024 [NOI2001] 食物链 题解

882 字
4 分钟
P2024 [NOI2001] 食物链 题解

题目描述#

动物王国中有三类动物 A,B,CA,B,C,这三类动物的食物链构成了有趣的环形。AABBBBCCCCAA

现有 NN 个动物,以 1N1 \sim N 编号。每个动物都是 A,B,CA,B,C 中的一种,但是我们并不知道它到底是哪一种。

有人用两种说法对这 NN 个动物所构成的食物链关系进行描述:

  • 第一种说法是 1 X Y,表示 XXYY 是同类。
  • 第二种说法是2 X Y,表示 XXYY

此人对 NN 个动物,用上述两种说法,一句接一句地说出 KK 句话,这 KK 句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。

  • 当前的话与前面的某些真的话冲突,就是假话;
  • 当前的话中 XXYYNN 大,就是假话;
  • 当前的话表示 XXXX,就是假话。

你的任务是根据给定的 NNKK 句话,输出假话的总数。

思路#

这道题显然是并查集,那么我们需要考虑的是如何在并查集中把同类/不同类表示出来。如果我们将同类的合并到一个并查集里,不同类的不在同一个并查集,那么我们就无法记录不同类之间的关系。如果将不同类合并到一个并查集中,同类的也合并到一个并查集中,其中在并查集里它们有一定的次序,就可以解决以上问题了。

具体过程#

当指令给出 XXYY 时,我们就把 XX 指向 YY 。不难发现,如果这些关系形成了一棵树或一条链,也就是从下到上下面的吃上面的,就会构成一个循环:每差三个就是一个同类。

当给出两者是同类的关系时,说明我们需要将两者合并到一个并查集中。但是不能乱合并,我们也需要体现出其中的层次关系。只需要让这两个同类合并后深度差三即可。所以找到合适的位置再合并就行了。




附:圆锥、球体体积推导#

圆锥#

一个圆锥可以看作是一个直角三角形绕直角边旋转一周的结果。同样的,我们如果用柱体的眼光看待,它就是大小渐变的圆堆积而成的物体。这么一来,我们就可以使用积分求出它的体积了。

如图,我们可以把圆锥进行“切片”操作。

截屏2022-10-16 17.23.30.png
截屏2022-10-16 17.23.30.png

对于每一个圆的半径,我们可以用相似三角形求解。

截屏2022-10-16 17.25.27.png
截屏2022-10-16 17.25.27.png

如图,我们假定圆锥的高度为 hh ,底面半径为 RR ,那么对于一个到顶点距离为 xx 的圆,它的半径 rr 就是 R×xhR \times \frac{x}{h} 。对于 x[0,h]x \in [0,h] ,我们将这些面积进行积分。

对于每一个圆的面积:

f(x)=π×(Rh×x)2=π×R2h2×x2f(x)=\pi \times (\frac{R}{h} \times x)^2=\pi \times \frac{R^2}{h^2} \times x^2

要求:

0hf(x)dx=F(h)F(0)\int_{0}^{h} f(x)dx = F(h)-F(0)

而:

F(x)=π×R23h2×x3F(x)=\pi \times \frac{R^2}{3h^2} \times x^3

故最终的答案为:

F(h)F(0)=π×R23h2×h3=13πR2hF(h)-F(0)=\pi \times \frac{R^2}{3h^2} \times h^3=\frac{1}{3} \pi R^2 h

球体#

我们把上面的思路变换一下,将球体切片成大小不一的圆形。对于到圆心距离为 x[R,R]x \in [-R,R] 的圆的面积可以表示为:

f(x)=π(R2x2)2=πR2πx2f(x)=\pi (\sqrt{R^2-x^2})^2=\pi R^2- \pi x^2

积分一下:

F(x)=πR2xπ3x3F(x)=\pi R^2 x - \frac{\pi}{3}x^3

求得体积:

RR=F(R)F(R)=(πR2×Rπ3R3)×2=43πR3\int_{-R}^{R}=F(R)-F(-R)=(\pi R^2 \times R - \frac{\pi}{3}R^3)\times 2=\frac{4}{3}\pi R^3

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
P2024 [NOI2001] 食物链 题解
https://www.0x3f.foo/posts/the-post-8764/
作者
Dignite
发布于
2022-10-16
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Dignite
When nothing goes right, go left.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
站点统计
文章
146
分类
5
标签
271
总字数
314,753
运行时长
0
最后活动
0 天前

目录