zoukankan      html  css  js  c++  java
  • Codeforces Round #584

    Contest Info


    [Practice Link](https://codeforc.es/contest/1209)
    Solved A B C D E1 E2 F G1 G2 H
    7/10 O O O O Ø Ø - O - -
    • O 在比赛中通过
    • Ø 赛后通过
    • ! 尝试了但是失败了
    • - 没有尝试

    Solutions


    A. Paint the Numbers

    题意:
    要给一个序列中每个数(a_i)染色,但是要保证同一种颜色的数的(gcd)等于这些数中的最小的那个数。问所需的最少颜色数

    思路:
    排序后,从最小的染起,没染就染,然后标记它的倍数都被染过

    B. Koala and Lights

    题意:
    (n)个灯,每个灯有一个开关的周期,问某一时刻同时亮着的灯的数量最大是多少

    思路:
    只有(100)个灯,并且周期很小,直接暴力标记一下

    C. Paint the Digits

    题意:
    (n)个数(a_i in [0, 9]),现在要给每个数标上(1)或者标上(2),现在要使得将标上(1)的数都按顺序取出来,然后将标(2)的数按顺序取出来接在标(1)的数的后面。
    使得这个序列是一个非递减序列
    如果存在这样的方案,输出方案

    思路:
    考虑标(2)的数中最小的数肯定大于等于标(1)的数的最大的数。
    枚举这个数,然后贪心即可。

    D. Cow and Snacks

    题意:
    (n)个人,有(k)个餐品,每个人有两种非常喜爱的餐品,现在每种餐品都有一个,现在要求给(n)个人排个顺序,他们轮流去吃这(k)个餐品。
    餐品吃掉之后就没了, 对于每个人来说,它吃餐品的策略如下:

    • 找是否有自己最喜欢的两种餐品,有就吃,如果两个都有,两个都吃
    • 如果吃到了,那么他就是快乐的人,否则就是不快乐的。

    问如果安排这(n)个人的顺序,使得快乐的人尽量多。

    思路:
    首先,第一个人安排谁其实无所谓,因为安排谁都会吃掉两块。
    我们考虑接下来的人中,肯定优先选其中一个最喜爱的餐品被吃掉的人,因为这样不会造成浪费。
    (DFS)一下即可。

    E1. Rotate Columns (easy version)

    题意:
    (n cdot m)的矩阵,每一列可以循环移位,问如果移位后使得每一行的最大数之和最大。
    (1 leq n leq 4, 1 leq m leq 100)

    思路:
    考虑最终结果只会在前(n)大列中的循环移位中产生,暴力枚举即可。

    E2. Rotate Columns (hard version)

    题意:
    (E1)(1 leq n leq 12, 1 leq m leq 2000)

    思路:
    考虑最终结果只会在前(n)大列中的循环移位中产生,那么(m)就只有(12)了。
    再考虑(f[mask])表示哪些位被确定的状态下的最大值,显然最后的答案为(f[(1 << n) - 1])
    再枚举每一列的循环移位进行转移,假设已经确定了(mask),那么可以枚举(mask)补集的子集进行覆盖转移

    G1. Into Blocks (easy version)

    题意:
    (n)个数(a_i),现在可以修改一些位置的数,使得每一种数最左的位置和最右的位置之间的数都是这个数。
    求最小的修改次数。

    思路:
    考虑每一种数都有一个范围([l, r]),表示这个范围的数要相等。
    那么将每种数的([l, r])都取出来,合并后。
    那么对于每个([l, r]),我们取这范围出现次数最多的数保留下来,其他数都修改掉

  • 相关阅读:
    ES6——Promise
    ES6——generator-yield
    ES6——generator
    JQuery——关于CDN(内容分发网络)
    关于JSON使用要注意的地方
    第7课
    第6课
    第5课
    第4课
    第3课
  • 原文地址:https://www.cnblogs.com/Dup4/p/11525791.html
Copyright © 2011-2022 走看看