2021-team02-007

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

[/wiki/2021-team02 返回]

[[Image(Rank.png,1000px)]]

[[Image(Submissions.png,1000px)]]

= 流水账 =

~~这里是流水账~~

= 总结 =

=== pb: ===
TODO:

1. 补 G √,但是我是笨蛋


=== Creatix: ===
TODO:

1. 学拟阵 √(?)

2. 补 I √

3. ~~补 H~~

----

拟阵是一个空间 (E, I),其中 E 是一个集合,I 是 E 的子集的集合(预先使用之后才被定义的名词:I 是 E 的独立集的集合)。

我们称其为拟阵,当且仅当以下三条性质得到满足:

I1. 空集属于 I,或者说空集是独立集。

I2. 独立集的子集是独立集。

I3. 如果 A 和 B 都是独立集且 A 的元素个数比 B 多,那么存在 x 属于 A \ B 使得 B ∪ {x} 是个独立集。

一个元素个数最多的独立集被称为矩阵的一组基。

----

我们可以给一个集合定义权函数 W(A) 为:W(A) = \sum_{a \bel A} w(a)。

结论 1:在这个新的结构(E, I, W) 下,如果我们需要找到最大权的独立集,我们只需维护一个集合,每次加入权值最大的、不会导致集合不独立的元素即可。

例子:用拟阵证明最小生成树算法。

在这里,E 表示整个边集,独立集被定义为能构成森林的边集,则基表示能构成树的集合,而权函数 w 就是边权,W 就是边集中所有边的边权。

想求最小生成树,我们只需要按边权从小到大的顺序尝试加入边即可。

----

关于结论 1 的证明:

基具有以下两条性质(容易由独立集的性质得出)

B1. 任意拟阵至少存在一个基。

B2. 对于任意两个不同的基 A,B,对于任意 a 属于 A \ B,存在 b 属于 B \ A,使得 A \ {a} ∪ {b} 也是一个基。

另外,容易发现所有基的大小都是相同的,我们称一个子集的基的大小为它的 rank。

有了这些性质,我们再来考虑上文所说贪心的正确性。

假设我们通过这个贪心所求出来的基为 A,那么对于任意一个不同的基 B,我们取 m 为 A \ B 中权值最大的元素,

取独立集 C = {x 属于 A | w(x) >= w(m)},D = B \ (C \ {m})

根据前面的贪心,w(m) 一定不小于比 D 中的任意元素的权。

所以,我们利用性质 I3,每次用 B 独立集来拓展 C 独立集,直到 C 独立集变成一个基 C'。

此时容易发现,C' 独立集的权值不小于 B。我们用 C' 替换 B。

重复这个步骤有限次后,我们得到的独立集会和 A 完全相等。即,W(A) >= ...  >= W(C') >= W(B) 

----

=== Eden_CY: ===
TODO:

1. 补 B √


= 题解 =

 * A:

 * B:预处理每个圆要积分的O(n)个的段,询问时枚举每个圆二分位置,分类讨论。

 * C:二分答案

 * D:简单dp

 * E:简单dp

 * F:

 * G:

 * H:

 * I:注意判 -1

 * J:

 * K:

 * L:

 * M:

[/wiki/2021-team02 返回]

流水账

这里是流水账

总结

pb:

TODO:

1. 补 G √,但是我是笨蛋

Creatix:

TODO:

1. 学拟阵 √(?)

2. 补 I √

3. 补 H


拟阵是一个空间 (E, I),其中 E 是一个集合,I 是 E 的子集的集合(预先使用之后才被定义的名词:I 是 E 的独立集的集合)。

我们称其为拟阵,当且仅当以下三条性质得到满足:

I1. 空集属于 I,或者说空集是独立集。

I2. 独立集的子集是独立集。

I3. 如果 A 和 B 都是独立集且 A 的元素个数比 B 多,那么存在 x 属于 A \ B 使得 B ∪ {x} 是个独立集。

一个元素个数最多的独立集被称为矩阵的一组基。


我们可以给一个集合定义权函数 W(A) 为:W(A) = \sum_{a \bel A} w(a)。

结论 1:在这个新的结构(E, I, W) 下,如果我们需要找到最大权的独立集,我们只需维护一个集合,每次加入权值最大的、不会导致集合不独立的元素即可。

例子:用拟阵证明最小生成树算法。

在这里,E 表示整个边集,独立集被定义为能构成森林的边集,则基表示能构成树的集合,而权函数 w 就是边权,W 就是边集中所有边的边权。

想求最小生成树,我们只需要按边权从小到大的顺序尝试加入边即可。


关于结论 1 的证明:

基具有以下两条性质(容易由独立集的性质得出)

B1. 任意拟阵至少存在一个基。

B2. 对于任意两个不同的基 A,B,对于任意 a 属于 A \ B,存在 b 属于 B \ A,使得 A \ {a} ∪ {b} 也是一个基。

另外,容易发现所有基的大小都是相同的,我们称一个子集的基的大小为它的 rank。

有了这些性质,我们再来考虑上文所说贪心的正确性。

假设我们通过这个贪心所求出来的基为 A,那么对于任意一个不同的基 B,我们取 m 为 A \ B 中权值最大的元素,

取独立集 C = {x 属于 A | w(x) >= w(m)},D = B \ (C \ {m})

根据前面的贪心,w(m) 一定不小于比 D 中的任意元素的权。

所以,我们利用性质 I3,每次用 B 独立集来拓展 C 独立集,直到 C 独立集变成一个基 C'。

此时容易发现,C' 独立集的权值不小于 B。我们用 C' 替换 B。

重复这个步骤有限次后,我们得到的独立集会和 A 完全相等。即,W(A) >= ... >= W(C') >= W(B)


Eden_CY:

TODO:

1. 补 B √

题解

  • A:
  • B:预处理每个圆要积分的O(n)个的段,询问时枚举每个圆二分位置,分类讨论。
  • C:二分答案
  • D:简单dp
  • E:简单dp
  • F:
  • G:
  • H:
  • I:注意判 -1
  • J:
  • K:
  • L:
  • M: