【考试】【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\) 的数取模是没有意义的。
那么直接维护区间最大值和区间和即可。

浙公网安备 33010602011771号