• qbzt2020五一DAY1T1集合——题解


     

     题解:

      首先考虑如何求出一个集合的优美值:

        可以先将集合的元素从小到大排序,顺序扫描一遍。假设现在的优美值为t,即扫到当前位置最多可以凑出[1,t],那么对于下一个数x:
          如果 x<=t+1,那么这个数加入后可以凑出[1,t+x],答案t=t+x;
          否则能够凑出的部分还是[1,t],答案不变,且不会再变了,退出扫描;
      但现在的情况是,要从另一个集合中拿k个数加入当前集合,再求出当前集合的优美值。可以先求出另一个集合的数加入前的当前集合的优美值t,然后顺序对另一个集合顺序扫一遍(所有集合读入后都要先排好序)、建一个栈,将从另一集合中找到的满足x<=t+1的x放入栈中直到不满足,那么栈顶元素就是最适合放进第一个集合的值。更新t,取出栈顶后继续找,直到放进第一个集合k个值,或是栈空且没有x能满足x<=t+1为止。

    复杂度:O(Tm)。

  • 相关阅读:
    C语言基本语法——函数
    C语言基本语法——数组
    iOS面试总结(待完善)
    iOS开发——蓝牙开发
    iOS开发——性能分析
    ios开发——runtime
    Extjs6的常见问题及解决办法
    会员信息布局,自动放缩
    LINQ关于NULL的怪现象
    [代码整洁]自我感悟
  • 原文地址:https://www.cnblogs.com/InductiveSorting-QYF/p/12819547.html
Copyright © 2020-2023  润新知