zoukankan      html  css  js  c++  java
  • Codeforces Round #727 (Div. 2) 题解(A-D)

    A. Contest Start

    分类讨论一下:

    • (t < x): 不会有任何冲突,答案为(0)
    • (t = x): 除了第一个人,其余都有1的冲突,答案为(n - 1)
    • (t > x): 冲突数依次为(0, 1, 2, dots, d - 1, d, d, d, d, dots),其中(d = lfloor dfrac{t}{x} floor)

    注意要特判(n < d)的情况。

    B. Love Song

    注意到只要知道区间([l, r])内每个字母的出现次数,就能(O(26))回答一个询问。前缀和搞一下完事了。

    C. Stable Groups

    将学生按等级排序之后,最终的分组情况会是多个连续的区间。遍历一遍就可以得出不可添加额外学生的最有分组情况。

    注意到,相邻的两个区间是可以合并的。记左区间的右端点为(l),右区间左端点为(r),则可以花费(dfrac{a_r - a_l - 1}{x})的代价将两个区间合并。

    然后贪心优先合并代价小的区间就可以了。

    我遇到的一个小问题

    我的第一发看错题目了,看成了组内任意两个学生等级之差不能超过(x),但是还是过了。这样写和正解之间的差别就在于一开始遍历出的分组情况,我第一发的做法在初始时会分出更多组。但是在本题中,由于代价计算的方式,原本属于同一组,但被我的做法额外分出来的组,最后都会以(0)的代价合并。

    D. PriceFixed

    通过观察发现:

    • 如果有商品能用1元买,那么优先买这些商品是此时最优方案的一种。
    • 如果所有商品都只能用2元买,那么买(b_i)最大的商品是此时最优方案的一种。

    然后就优先买(b_i)大的商品,一旦能1元购就优先买所有的1元购。

  • 相关阅读:
    LOJ10092半连通子图
    LOJ104 普通平衡树
    LOJ10145郁闷的出纳员
    LOJ10144宠物收养所
    LOJ10043
    洛谷P3850 书架
    codevs 1814 最长链
    洛谷 P2022 有趣的数
    codevs 1312 连续自然数和
    noip 2010 引水入城
  • 原文地址:https://www.cnblogs.com/zengzk/p/14911462.html
Copyright © 2011-2022 走看看