zoukankan      html  css  js  c++  java
  • CF/AT 泛做

    CF R 682 Engineer Artem [*2000]

    考虑奇偶性,显然如果一个偶数与奇数相邻,必然他们不相等。

    直接考虑黑白染色,黑点改为奇数,白点改为偶数即可。

    时间复杂度 (O(tnm))

    https://codeforces.com/contest/1438/submission/117497127

    Edu CF R 89 Two Divisors [*2000]

    考虑将每个数质因数分解,再来构造。

    如果被分出来的两个因数 (d_1,d_2) 满足 (gcd(d_1,d_2) ot=1),那么他们的和会为 (d imes(frac{d_1}{d},frac{d_2}{d})),其中 (d)(x) 的一个约数,这显然不可取。

    所以,我们就有了一个构造方法,当 (x ot =p^k) 时,其中 (pin ext{prime}),无解,而其余情况,固定 (x) 的任意一个质因子 (d),输出 (frac{x}{d^k}),其中 (x) 可被分解为 (a imes d^k(a ot equiv 0pmod d))

    时间复杂度:线性筛 (O(10^7)),单次回答 (O(log x)),总时间复杂度 (O(10^7+nlog x))

    http://codeforces.com/contest/1366/submission/117498343

    CF R 223 Sereja and Brackets [*2000]

    数据范围 (10^6),考虑 (log) 级别数据结构。

    考虑用线段树维护,对于每一段区间,维护三个值,靠左的右括号个数 (l),靠右的左括号个数 (r) 以及当前匹配的括号个数 (ans)

    pushup 时,直接考虑处理每一段接起来后中间可合并的括号。

    时间复杂度:建树 (O(nlog n)),询问 (O(mlog n)),总时间复杂度 (O((n+m)log n))

    https://codeforces.com/problemset/submission/380/117713290

    Edu CF R 46 We Need More Bosses [*2100]

    显然有一个结论是,在同一个边双连通分量的点之间的答案为 (0)

    所以直接对边双缩点,在缩出来的树上求直径即可。

    时间复杂度:(O(n+m))

    https://codeforces.com/contest/1000/submission/117848026

    Edu CF R 46 One Occurrence [*2400]

    大力莫队,(O(nsqrt{n}))(5 imes 10^5) 不是梦。

    这个做法很卡,但还是过了。

    考虑怎样维护答案,我们考虑求出出现个数为 (1) 的数,并用一个栈维护。

    加入很好做,删除呢?

    考虑记录出每个数所在栈的位置,把这个数踢出去的同时,把栈顶丢到这个数所在的位置。

    这样,对于每一次询问,直接求栈顶的值即可。

    时间复杂度:(O(qsqrt{n}))

    https://codeforces.com/contest/1000/submission/117852388

    CF R 723 Kill Anton [*2200]

    有一个结论,就是答案串必然由连续的字母段组成。

    所以,大力枚举连续字母段的组成,即 ANTO 的一个排列。

    剩下的,显然要考虑如何配对,又有一个结论,即在前面的字符匹配在原串中前面的相同字符,这样排队一定是最优的。

    那么,对组成的序列编号后,对应编号,求逆序对即可。

    时间复杂度 (O(24nlog n))

    https://codeforces.com/contest/1526/submission/117721441

    CF R 643 Guess Divisors Count [*2600]

    精辟乱搞。

    显然问出正确答案不切实际,考虑如何问出近似答案。

    考虑尽量询问多的约数,所以开一个队列,尽量询问多的约数并统计答案。

    在询问了 (22) 次之后,我们可以乐观估计,小于 (850) 的素因数已被询问出来,考虑剩下的数(以下 (p) 表示任意大于 (850) 的素数):

    • (1):此时 (d=ans)
    • (p):此时 (2 imes d=ans)
    • (p^2):此时 (3 imes d=ans)
    • (p_1 imes p_2),此时 (4 imes d=ans)
    • (p_1 imes p_2 imes p_3),此时你会发现,(850^3 imes 2>10^9),这说明 (ans=8).

    考虑对求出的 (d) 做一定的调整,如何调整呢?乘以 (2) 即可,此时发现会完全符合条件。

    https://codeforces.com/contest/1355/submission/117991144

    ARC 103 B Robot Arms [*2677]

    首先考虑如何判无解,容易发现,如果 (x_i+y_i) 的奇偶性有不同的,显然不可能有解。

    考虑接下来如何构造,发现 (mle 40) 很有学问,考虑二进制分解一下。

    倍增构造,步长设为 (2^k) 幂,每次选择距目标点较远的坐标来跳,容易发现这是一定可行的。

    https://atcoder.jp/contests/arc103/submissions/23176829

    ARC 103 D Distance Sums [*2836]

    考虑如何求 (D_i),显然有一个 DP 式子:

    [D_{son}=D_{fa}-siz_{son}+(n-siz_{son}) ]

    变形一下,得:

    [D_{fa}=D_{son}+2 imes siz_{son}-n ]

    那么,我们只要知道 (D_{son}) 与其他常量就可以推出 (D_{fa})

    钦定重心为根,显然此时叶子节点的值最大,从大到小对给定的 (D) 排序,根据每一个点的 (D) 推出他的父亲。

    我们只满足了父子之间的关系,所以我们还要在构造完之后跑一遍 (D) 的值,以使得是对的。

    https://atcoder.jp/contests/arc103/submissions/23177106

    ARC 091 D Strange Nim [*2395]

    考虑博弈论,显然可以设 (f(i,j))) 为大小为 (i) 的石子,且 (j) 为常数 (k) 的胜负情况。

    如果你很牛逼或者善于打表,那么你可以得到一个结果:

    [f(i,j)=egin{cases}0 & a<k\frac{a}{k} & aequiv 0 pmod k\f(a-lfloor frac{a}{k} floor-1,k) & a otequiv 0pmod k end{cases} ]

    那么,于是你直接暴力模拟,然后 T 了 (4) 个点。

    发现在第三种情况中,我们会跳了太多次,所以考虑压一下跳的步数。

    然后就没了。

    CF R 729 Priority Queue [*2200]

    考虑对每个数计算它的贡献。

    那么我们需要求出它不被删去的贡献,DP 即可。

    (f_{i,j}) 表示在前 (i) 个数中,选了多少个替罪羊,分几个情况讨论一下:

    1. (i) 在当前枚举的数之前:
      • 若是一次删除:
        • (f_{i,j}=f_{i-1,j}+f_{i-1,j+1})
        • 注意特判 (j=0)(f_{i,j}=2 imes f_{i-1,j}+f_{i-1,j+1})
      • 若是一次添加:
        • 若是替罪羊:
          • (f_{i,j}=f_{i-1,j-1}+f_{i-1,j})
          • 同样特判 (j=0)(f_{i,j}=f_{i-1,j})
        • 若不是替罪羊,选与不选均可:
          • (f_{i,j}=2 imes f_{i-1,j})
    2. 若现在转移到 (x),显然 (f_{x,j}=f_{x,j-1})
    3. (i) 在之前枚举的数之后,类情况 (1) 不过要做一定的修改:
      • 当是删除且 (j=0) 时,(f_{i,j}=f_{i-1,j}+f_{i-1,j+1})。因为如果没有了替罪羊,我们要计算的就会被删去,只好不选。
      • 注意到本题有重复的数字,为了避免重复计算,在 (i>x) 时,一个数能成为替罪羊,当且仅当 (a_i>a_x),而不是之前的 (a_ige a_x)

    记得取模。

    https://codeforces.com/contest/1542/submission/122883000

  • 相关阅读:
    图2(矩环问题)
    图1(八连块)
    恶补一下DP+背包专题(刷刷水题)L2
    food(洛谷P4040 [AHOI2014/JSOI2014]宅男计划)
    滑动窗口
    Lawnmower(洛谷 CF115B)
    Price(洛谷P4109 [HEOI2015]定价)
    逆序对
    矩阵
    1.25日考试
  • 原文地址:https://www.cnblogs.com/lajiccf/p/15376235.html
Copyright © 2011-2022 走看看