• Codeforces Round #683 (Div. 1, by Meet IT)/Codeforces1446 ABC


    AC代码

    A. Knapsack

    猜结论:给所有的物品按重量降序排序。然后枚举物品,如果拿了这个物品后会超重,那么就不拿。否则就拿。

    如果拿了一个物品后,重量符合了条件,就返回输出答案。

    B. Catching Cheaters

    观察1:如果为了使LCS增加1,而多用超过2个字符,这样其实是亏本的。

    观察2:如果使用正好2个字符,这样其实不赚。

    根据观察,就可以有一个(O(n^2))动态规划的方法。大概就是(dp{i, j})可以只从(dp_{i - 1, j})(dp_{i, j - 1})(dp_{i-1,j-1})转移得到。

    我比赛的时候只用了观察1写,多写了好多转移,浪费了很多时间,其实可以结合观察2再简化。

    C. Xor Tree

    将所有元素都插入01字典树,高位靠近树根。这个时候有:同一颗子树内的两个叶子节点异或值会更小。

    所以,如果一个节点的左子树和右子树都包含超过1个节点,那么左子树和右子树里的点就会内部消化,形成两棵树。

    反之,就只会形成1棵树。

    所以,当存在上述节点时,贪心地把包含点数少的子树删成只有一个节点,这样就可以使最后保留的节点尽可能地多。

  • 相关阅读:
    重点词笔记
    pycharm tips
    标注精简过的问题如何导入问题库
    增加权重
    word2vec训练出来的相似词歧义
    算法测试及对比度进一步增强
    Python 命名笔记
    债务重组的会计处理方法
    实质性方案与综合性方案的区别
    什么叫认定层次
  • 原文地址:https://www.cnblogs.com/zengzk/p/13983222.html
Copyright © 2020-2023  润新知