zoukankan      html  css  js  c++  java
  • Codeforces 799E(贪心)

    题意:

    有n个物品,购买物品i需要花费ci的代价。Arkady和Masha分别有喜欢的物品。

    现在需要从中选m个,使得这m个物品中至少有k个Arkady喜欢的物品,k个Masha喜欢的物品。

    输出满足要求的最小代价,无解输出-1。

    1 <= n <= 2e5, 1 <= m <= n, 1 <= k <= n.

    1 <= ci <= 1e9.

    分析:

    将物品分为4类

      A:两人都喜欢的物品

      B:只有Arkady喜欢的物品

      C:只有Masha喜欢的物品

      D:两人都不喜欢的物品

    每组内部从小到大排序

    枚举A类选择x个,那么B类选择k-x个,C类选择k-x个,那么现在总共选了2*k-x个,对于剩余m-(2*k-x)个就在D类里选择

    考虑x->x+1,只需要用set来维护,就可以做到O(logn)转移答案

    总的复杂度O(nlogn)

  • 相关阅读:
    django 常用命令
    nginx+gunicorn
    终于决定写个技术博客
    test
    自定义控件
    .net mvc 发布部署到机器上
    C# StringExt 字符串扩展
    MYSQL连接数据库
    List IEnumerable
    CentOS安装pip
  • 原文地址:https://www.cnblogs.com/wmrv587/p/6883304.html
Copyright © 2011-2022 走看看