zoukankan      html  css  js  c++  java
  • 抗癌日记

    oifive与病魔的抗争,疾病是否可以打败他?

    其实就是模拟赛和互测总结啦

    会填坑…

    2019-08-26【高二组】模拟赛 1

    T1

    原题可以转化为在原图中删去一些点,使得图中度数最小的丶最大。

    我们注意到每次决定这个值的只有度数最小的点,只有删去它才可能影响答案。

    于是考虑贪心,每次删去度数最小的丶,并维护答案。

    复杂度 (O(nlog n))

    T2

    模拟,逻辑要想清楚,从基本情况进行考虑。

    复杂度 (O(n))

    T3

    就抄题解吧

    考虑枚举一条边,把原树分成两棵树,那么最大乘积要么是两棵树上的最长链乘积,要么是两棵树上的最短链乘积(最短链为负数)。

    直接这样做的时间复杂度为 (mathcal{O}(n^2)),根据实现的不同可以得到大小不等的分数。

    考虑 DP,首先需要了解换根 DP,同时,我们只考虑最大乘积为两棵树上的最长链乘积的情况,另一种情况同理。

    我们首先选定一个根 (root)

    (f_i) 表示 (i) 的子树中的最长链,这个很容易通过树形 DP 实现。

    具体而言,维护每个点向下的最长链以及次长链,那么 (f_i) 要么是该点向下的最长链 (+) 次长链,要么是 (max_{j in son_i}{f_j})

    (g_i) 表示去掉 (i) 子树后,树中的最大正路径,这个可以通过换根 DP 的技巧实现。

    具体而言,(g_i) 的值只可能为:

    1. (fa_i) 除去向 (i) 的链后,其向下的最长链 (+) 次长链(由于要除去向 (i) 的链,因此要维护向下的第三长链)。
    2. (fa_i) 除去向 (i) 的链后向下的最长链 (+) (fa_i) 向上的最长链(维护向上的最长链与向下的类似)。
    3. (g_{fa_i})

    于是,最终的答案就是 (max_{i eq root}{f_i imes g_i}),时间复杂度为 (mathcal{O}(n))

    2019-09-10【高二组】模拟赛 3

    T1

    同选择客栈。

    T2
  • 相关阅读:
    1230: [Usaco2008 Nov]lites 开关灯
    1821: [JSOI2010]Group 部落划分 Group
    1819: [JSOI]Word Query电子字典
    1820: [JSOI2010]Express Service 快递服务
    3038: 上帝造题的七分钟2
    1854: [Scoi2010]游戏
    Codevs3278[NOIP2013]货车运输
    关于使用lazytag的线段树两种查询方式的比较研究
    算法模板——splay区间反转 1
    3223: Tyvj 1729 文艺平衡树
  • 原文地址:https://www.cnblogs.com/Hikigaya/p/11582077.html
Copyright © 2011-2022 走看看