用户工具

站点工具


2020-2021:teams:i_dont_know_png:week_summary_12

这是本文档旧的修订版!


2020.07.18-2020.07.24 周报

团队训练

团队会议

个人训练 - nikkukun

比赛

2020.07.21 Codeforces Round #658 (Div. 1)

题目 A1 A2 B C D E
通过
补题

学习总结

杂项

std::vector/map/set/deque::swap 可以常数交换两个容器(避免启发式合并时换来换去)。

std::list::splice 可以常数合并两个 list。不能用 std::list::merge,这是类似链表归并的东西,要重载小于号。

可并堆

pb_ds 中的可并堆:

#include <ext/pb_ds/priority_queue.hpp>
using namespace __gnu_pbds;
__gnu_pbds::priority_queue<int, less<int>, pairing_heap_tag> q;	// 大根堆

常用 pairing_heap_tag 和 binomial_heap_tag,但由于 pairing_heap_tag 的合并是 $O(1)$ 而后者是 $O(\log n)$ 的,实测是前者快一点。

这两个东西的其他操作都是 $O(\log n)$ 的。

维护技巧

对有一定偏序关系的集合,可以按偏序关系分成小于、等于、大于三类标记,或者是以此为时间线进行修改。

例如,按边权从小到大加边是最常见的一种做法,或者能证明这样的修改量是有限的。另一种例子是,从小到大枚举元素,每次只会让有限个大于标记的元素变为小于,也是一种单调的变化(进而可以用线段树之类的维护)。

本周推荐

Petrozavodsk Winter 2020. Day 5. Jagiellonian U Contest D - Clique

题目链接

题意:一个圆被分为 $10^6$ 份并标号,给 $n \leq 3000$ 段圆上的弧,每段弧都对应了一段连续的标号。尽可能多地选出弧,使得任意选中的两条弧都有至少一个标号相同。

题解:一个比较详细的题解 见此

备注:本题妙的地方在于,它将相交的判定,变成了两个相关量的判定,进而转化为平面上的几何问题,并发现这个问题可以用 DP 解决。

个人训练 - qxforever

比赛

2020.07.21 Codeforces Round #403 (Div. 1)

题目 A B C D E F
通过
补题

2020.07.21 Codeforces Round #658 (Div. 1)

题目 A1 A2 B C D E
通过
补题

学习总结

本周推荐

个人训练 - Potassium

比赛

学习总结

本周推荐

题目链接

题意

题解

2020-2021/teams/i_dont_know_png/week_summary_12.1595472182.txt.gz · 最后更改: 2020/07/23 10:43 由 nikkukun