【考试】【2022.2.10】考试总结

我好不容易心动一次,你却让我输得这么彻底。哈哈哈哈哈哈 ...... 焯!

案发现场

案发现场 ...... 已经 ...... 无所谓了 ......

真相大白

\(A\)

线性逆元。

\(C^m_n = \dfrac{n!}{m!(n-m)!}\)

\(n!\) 很好求。

\(\because p = 1e9+7\),有费马小定理得 \((n!)^{p-2} = \dfrac{1}{n!}\)

\(\therefore \dfrac{1}{(n-1)!} = \dfrac{1}{n!} \times n\)

就可以线性求阶乘逆元了。

\(B\)

\(Subtask \ 1\)

计算出杀死僵尸的时间范围就变成了线段覆盖问题,贪心即可。

\(Subtask \ 2\)

贪心求出每一个僵尸在下一个僵尸出现前被杀死所需的最小代价,取最大值即可。

当有两个僵尸同时出现时, \(Subtask \ 2\) 无解。

\(C\)

存正图和反图。

在反图上 \(BFS\) 求出每一个可以直接或间接到达 \(t\) 的节点。

在正图上搜索每一个出边指向的节点都在反图上标记过的节点,记为 \(A\)

在正图上 \(Dijkstra\) 求只包含 \(x \in A\) 节点的最短路。

\(D\)

第一眼看上去竟然像 DP ?

设原数组为 \(a,b,c,d\)

其差分数组为 \(a,b-a,c-b,d-c\)

修改后原数组为 \(a,b,b+d-c,d\)

其差分数组为 \(a,b-a,d-c,c-b\)

其实就是交换查分数组的两项。

设差分数组出现的数的个数分别为 \(a_1,a_2,...,a_k\)

则答案为 \(\dfrac{(\sum_{i = 1}^ka_i)!}{a_1!a_2!...a_k!}\)

\(E\)

线段树维护每一个点所在的区间左右端点,分裂次数和区间和即可。

#15 数据点太毒瘤了!

\(F\)

对于区间开根和区间取模操作,直接推平即可。

因为对 \(1\) 开根和对小于 \(k\) 的数取模是没有意义的。

那么直接维护区间最大值和区间和即可。

posted @ 2022-02-10 16:57  Daniel2020  阅读(18)  评论(0)    收藏  举报