• CF720F


    题目描述

    给定1≤n≤100000,1≤k≤n(n-1)/2,和〈a_1, ... ,a_n〉,其中-50000≤a_i≤50000, 要求选出k个不同的子段,使得每个元素都被这些子段覆盖且这k个子段和的和最大.

    题解

    Lemma 0. 对于每个未选择点加入的一定是两端扩展到最大的范围

    这还用证明么..?因为加入的点存在未选择的那么加入的一定是未选择的,当然怎么大怎么好.

    Lemma 1. 前min(k-n,0)大的子段一定在选择内

    k≤n的情况显然是正确的, 考虑k>n.

    Def. x=k-n 前p大子段被选择 p<x

    那么对于并非最优的k-p>n个子段, 一定有两个子段重叠在前p大子段没有到达的地方(鸽笼).

    Lemma 2. 非最优重叠在最优没有到达的地方不优

    即部分选择[l1,r1]l2,r2包含两个最优未选择t1,t2,且l1≤t1,t2≤r1, l2≤t1,t2≤r2

    那么l2≤r1,我们可以直接将选择变成[l1,r2]+一个最优, 因为加入[r1+1,r2]必然不会更劣,不然选择就是[l1,r1],[l2,r1],然后发现包含,于是没有必要.

    Lemma 2 Quite Easily Done.

    Lemma 1 Quite Easily Done.

    (其实感觉不是很严谨啊..谁来提供一个更严谨的证明或找一下证明的bug..)

    Theorem CF720F

    可以在(O(nlog^2{n}))复杂度内完成.

    那么我们就先计算前min(n-k,0)个最优, 用二分+扫描线, 然后对于剩下的n个选择我们一次次加入最优区间看现在的答案, 此时我们维护剩下的未选择区间, 先贪心一个n时最优解, 每次被选择就删去两端扩展与它的贡献.

    建议对着我的题解看官方题解找感觉.

    http://codeforces.com/blog/entry/47183

  • 相关阅读:
    AC自动机模板2(【CJOJ1435】)
    AC自动机模板1(【洛谷3808】)
    【HDU 2063】过山车(二分图最大匹配模板题)
    矩阵快速幂
    Trie树
    AC自动机
    高斯消元法
    KMP算法 Next数组详解
    端口映射
    最全面的HashMap和HashTable的区别
  • 原文地址:https://www.cnblogs.com/tmzbot/p/5995120.html
Copyright © 2020-2023  润新知