08/20迷迷糊糊但是好题挺多的一周

  • Weekly Contest 307
    • 赢得比赛需要的最少训练时长: 模拟题
    • 最大回文数字: 贪心
    • 感染二叉树需要的总时间: 图论模拟
    • (good)找出数组的第 K 大和: 好题目,据说是amazonOA(这么难吗…)。需要转换问题两次,其中负数的转换很巧妙。
  • Biweekly 85
    • 得到 K 个黑块的最少涂色次数: 模拟题。双指针可以简化复杂度到O(n)
    • 二进制字符串重新安排顺序需要的时间: 模拟题。
    • 字母移位 II: 把更新平摊在数轴上来优化。不要做什么题都扯到太过高级的数据结构上(比如线段树),这题没有动态跟心,没有必要用线段树。时间复杂度总和更多功能之间有tradeoff的。
    • 删除操作后的最大子段和: 反向处理query把分割操作变成合并操作+并查集。很经典了
  • Codeforces Round #816 (Div. 2):
    • Crossmarket: 贪心
    • Beautiful Array: 数学+构造
    • (good)Monoblock: 找规律+数学。
      • 奇妙地把元素之间的关系(如a_1, a_2, a_3),转化成间隙(如)之间的关系。
    • (good)2+ doors: 贪心+模拟。
    • (good)Long Way Home: 好题。最短路+斜率优化dp。之前一直知道斜率优化这个名词但是从来没有学过,这次居然自己推了出来很开心!标程的写法更加优雅(按照交点排序),学习到了。
      • 在遇到dp优化的时候,不妨假设最优的 f f f是从某个 f ′ ( j ) f'(j) f(j)来的,这时候 f ′ ( j ) f'(j) f(j)应该和其他来源的 f ′ ( j ′ ) f'(j') f(j)有一个性质(如 f ′ ( j ) ≤ f ′ ( j ′ ) f'(j)\le f'(j') f(j)f(j)),把公式展开或许就可以发现如何优化这个dp了。
    • Crop Squares: 脑力IQ题。很巧妙。
  • Codeforces Round #815 (Div. 2) (离线练习)
    • 好题解
    • Burenka Plays with Fractions: 简单数学
    • Interesting Sum: 巧妙的贪心
    • Corners: 贪心
    • (good)Xor-Subsequence: 好题目。问题有一个很巧妙的转化就是把 a j ⊕ i < a i ⊕ j a_j \oplus i < a_i \oplus j aji<aij转化成 [ a j ⊕ j = a i ⊕ i ] 0... k − 1 [a_j \oplus j = a_i \oplus i]_{0...k-1} [ajj=aii]0...k1并且 [ a j ] k ⊕ [ i ] k < [ a i ] k ⊕ [ j ] k [a_j]_k \oplus [i]_k < [a_i]_k \oplus [j]_k [aj]k[i]k<[ai]k[j]k其中 [ ] k []_k []k代表二进制的第k位置。这样子就可以在 a i ⊕ i a_i \oplus i aii上做前缀树了!
    • Misha and Paintings

你可能感兴趣的:(题解,算法,贪心算法)