近期做的 AT/CF 总结

因为 AT/CF 是比较常做的比赛网站了,而且也有不少好题,记录一下以便回顾。

CF1795
D 简单找找规律,注意到每个三角形里面必定颜色是1:2,分情况讨论一下
F 二分答案之后从树底开始找,如果当前结点要求满足就ok,否则需要将这个点往上走到父亲处,回溯在父亲的其它儿子中找(父亲和其它儿子都必须不能有黑点)
G 题解

  • CF1776G 答案就是长度为 \(n\) 的段内 W 最多的个数,证明可以考虑调整法,在向左/右扩展的时候,如果遇到 R,就直接包含,否则就删去另一边的 R 直到删掉第一个 W,由于我们取的是最大个数,因此新形成的段的长度一定 \(\geq n\)
  • CF1776B 区间dp,每次考虑 \([l,r]\) 的方块最低能从哪里开始“分叉”,因为这样能减少垫的个数。注意分叉点随区间扩大而降低,因此是对的。
    CF375B 题解
  • abc293e 分治,每次按奇偶考虑,注意不能等比数列求和公式,因为可能不存在逆元
  • abc293f 考虑 \(b > 1000\) 的话,最多有 \(7\)\(0-1\) 表示,\(b \leq 1000\) 时直接暴力枚举
  • abc293g 可以离线,区间询问。莫队板子
  • abc292e 从每个点开始暴力 dfs,然后就得到了连通矩阵 \(o[i][j]\),和原来的边矩阵一比较即可
  • abc292f 不妨设 \(a<b\)\(b\) 很大的时候将 \(a\) 作为正三角形的高,否则可以设一下三角形的边与矩阵的边的角,推一下边长。
  • abc292g 和这个题几乎一样,字符集变成了 10 而已
  • abc292ex 考虑 \(a_i-B\) 的前缀和,问题转化为这个数列第一个前缀和大于 0 的位置。考虑维护前缀和以及前缀和的最大值(或者是区间 \([l..r]\) 的从 \(l\) 开始的前缀和),用线段树维护之,查询就考虑在线段树上二分,每次记一下 \([1..l-1]\) 的和用来计算
  • gym103688A 二分一下拿走的书个数
  • gym103688L 将 S 串倍长得到 \(A\),再将 S 串逆序再倍长得到 \(B\)。从 \(n-l_1+1\) 处开始扫,\(A\) 的指针每次向前,\(B\) 的指针每次向后,用 hash 判断一下是否字符串相等,步长为 \(l_2-l_1\)。(可以找规律)
  • CF1822G G1 是 \(a_i\leq 10^6\),直接 \(O(\sqrt{M})\) 暴力求因数即可。现在是 \(a_i\leq 10^9\),考虑根号分治,枚举中间的数,当 \(a_j \leq M^{2/3}\) 的时候依然暴力求因数,否则直接枚举 \(a_j\times b=a_k\)\(b\) 显然是 \(O(M^{1/3})\) 级别的,因此总时间复杂度为 \(O(n \log n\ M^{1/3})\),带 \(log\) 是因为 std::map
  • CF1817A 对于一串不上升的序列,很明显选 2 个,严格上升的话就都选。这样每次统计一下在哪些位置答案会 +1,询问的时候二分位置即可,特判 \(l==r\)
  • CF1817B 是否存在一个点,度数 \(\geq 4\) 且包含环
  • CF1817C 插值求出多项式 \(A,B\) 的系数考虑 \(B(x)\)\(A(x+s)\)\(x^{d-1}\) 的系数,显然有 \(a_{d}\times d\times s+a_{d-1}=b_{d-1}\),求出 \(s\) 即可。插值的时候只需要求出 \(x^d\)\(x^{d-1}\) 的系数即可
  • CF1832E 注意到 \(k\)\(k-1\) 作差可以用到组合数的递推式,\(k\) 还很小,直接 \(O(nk)\) 递推即可
  • CF1841E 显然题目要求的就是给一个条形图,每次取最长的极长段。考虑从上往下扫,每个障碍用链表记一下此时左右的障碍在哪一列。然后开一个数组 \(num_i\) 代表长度为 \(i\) 的极长段出现了几次,然后从大往小取极长段即可
  • CF1834E 首先 MEX 最大是 \(n^2\) 级别的,有上界。考虑扫描每个元素作为区间的右端点 \(r\),然后往左拓展区间。每次至少 *2,如果出现超过上界的break,因此时间复杂度是 \(O(n\log n)\)
  • CF711E 正难则反。反过来发现就是一个排列数除以 2 的若干次方的形式。难点在于如何约分。注意只需要考虑分子的 2 的因子即可,然后由于 \(a\)\(2^n-a\) 包含 2 的幂次相同,因此可以利用阶乘求 2 的因子,再结合勒让德定理即可
  • CF711D 每个连通块是个基环树。对于每个连通块答案就是 \((2^{lp}-2) \times 2^{size-lp}\) 注意大小为 2 的环的判断
  • CF711C 显然 dp,设 \(dp_{i,j,k}\) 表示考虑到第 \(i\) 个树,用了 \(j\) 个颜色端,末尾为 \(k\) 的最小代价
  • CF1310D 注意到 \(k\) 很小而且题目保证有解。考虑随机化,将原图中随机染色。然后暴力 dp 更新答案。考虑答案对应的路径(一定是大小为 \(k\) 的偶环),如果对应的染色是正确的,那么 dp 一定可以更新到正确答案。一次染色正确的概率是 \(1/512\)(因为 1 号点颜色相当于已经固定了),因此做 \(n\) 次随机错误的概率是 \((\frac{511}{512})^{n}\),当 \(n=10^4\) 的时候错误率就在 1e-7 以下了。
posted @ 2023-02-27 16:01  SkyRainWind  阅读(58)  评论(0编辑  收藏  举报