2022 杭电第三场题解

2022 杭电第三场题解

11 给队友贡献了 10 发罚时哈哈哈哈哈哈哈哈哈

1 Equipment Upgrade

当时我把这题丢给队友,队友写了一会儿就 A 了,我还以为什么简单题,结果赛后一看不会做。。。

怎么说呢,把所有 \(E\) 表示成 \(a\times E_0+b\) 确实挺妙的。剩下的就是分治 FFT 了。

2 Boss Rush

队友做的,我还没看。

3 Cyber Language

不知为何要 T 读入后要 getchar 一下,不是很懂。

4 Divide the Sweets

优美的暴力。范围小要往 meet in the middle 想。

5 Spanning Tree Game

赛后改一下就过了,我超。10436 ms,喜提最劣解。

首先先将边拆成两条边。小的边可以选或不选,大的边一定选。在 Kruskal 算法中,小的边一定会先选,所以这样不影响正确性。

之后发现,不同的边用最小表示法后连通情况很少,\(Bell(9)=21147\),我赛后才反应过来这是贝尔数。

然后就是一个类似 dp 套 dp 的东西,\(f(i,j,k)\) 表示前 i 条边选了 j 条 a 的边连通编号为 k 的最大的最小生成树,之后就枚举这条边是否选,如果选了是否对连通情况产生影响。直接转移即可。

注意点:

  1. \(a<b\)\(a>b\) 是两种情况,\(a>b\) 的时候 dp 到 b,那么不选 j 要 +1。
  2. 是最大生成树,Alice 会选择所有选 k 条 a 的最大的。
  3. 不选和选了对连通情况不产生影响是不一样的,要视为两种转移。

6 Dusk Moon

我居然都不记得自己学过最小圆覆盖。。。

挺有趣的一道题。随机下凸包的期望点数是 \(\log n\),证明类似单调栈的证法,但又有点不一样。能覆盖凸包一定能覆盖所有点,对凸包里的点做最小圆覆盖即可。

8 Laser Alarm

计算几何苦手队的第一道计算几何哈哈哈哈哈哈

可以通过调整,最大的平面一定经过三个端点,那么直接枚举平面,与向量相交即可。注意全共线的情况要特判。

9 Package Delivery

考虑贪心,每个包裹都尽量拖到最后一天,这样能一次拿一定最多。排序后用堆即可。

10 Range Reachability Query

挺有趣的分块题。首先 dag 到达性问题就没有 polylog 做法,看到 n=50000 和 10000ms 直接猜 bitset。这题 nb 的地方在它把询问放进了 bitset 里面,然后倒序转移一遍。省空间的方法也是老方法了。

11 Taxi

我的解法是整体二分去掉 \(w_k\) 的限制,然后转成切比雪夫距离,维护 x 和 y 的最小和最大值即可。

赛中写了 kd 树,cdq 分治,都卡不过去,一个 log 都跑了 1800ms+。有点卡常。

12 Two Permutations

先特判不是两个排列的情况。若是两个排列,那么相同值的位置只有两个,直接暴力转移即可。队友用了 map 和 unordered_map 都没卡过去,改成 vector 反而过了。有点奇怪。

posted @ 2022-07-27 23:00  Owen_codeisking  阅读(165)  评论(0编辑  收藏  举报