Loading

CF duel 记录

CF1187G *2500

直接按时间分层,建网络流图即可。

\(\Delta\) CF1354G *2600

由于 \(k\le \frac{n}{2}\),我们用 \(\log n+O(1)\) 次询问来判定第一个位置是石头还是礼物。

随后考虑倍增,用 \([1,2^i]\) 这个区间来判定 \([2^i+1,2^{i+1}]\) 这个区间内有没有礼物。如果有的话,就抠出来这段长度为 \(2^i\) 的区间,再做一次二分找到礼物的位置即可。

\(3\log n+O(1)\) 次。

CF1515F *2600

考虑将所有点按照 \(a_i\) 从大到小排序。我们按照这个顺序检查每个点的所有出边,如果这条边两端点已经连通则直接将其删去,否则若不满足 \(a_u+a_v-x\ge 0\) 则无解。否则,我们将 \(u,v\) 两个点合并,将新的点的点权设为 \(a_u+a_v-x\),边集为两个点边集的并。

容易证明这是对的。

CF293C *2400

比较搞笑的题。

\((a+b+c)^3-a^3-b^3-c^3\) 因式分解,得到 \(3(a+b)(b+c)(a+c)\)。算出 \(\frac{n}{3}\) 的所有因数后,枚举其中两个作为 \(a+b,b+c\) 并检查这样是否确实形成一组合法的 \((a,b,c)\) 即可。

因为 \(\max_{n\le 10^{14}} \mathrm{d}(n)\le 2\times 10^4\),所以能过。

\(\Delta\) CF484C *2600

没想出来,比较失败。

考虑将题目给定的排序方式看作一个长为 \(k\) 的置换 \(P\)。我们在 \(P\) 的末尾填上 \(n-k\) 个不动点得到置换 \(P'\),设将整个序列循环左移一位的置换是 \(S\),那么最终的置换就是 \((P'S)^{n-k+1}S^{k-1}\)

而一个置换的若干次幂是可以 \(O(n)\) 计算的。于是总的时间复杂度就是 \(O(nq)\)

posted @ 2023-06-22 20:42  Alan_Zhao_2007  阅读(78)  评论(2编辑  收藏  举报