zoukankan      html  css  js  c++  java
  • 牛客练习赛63

    Contest Info


    Practice Link

    SolvedABCDEF
    4/6 O O Ø  Ø    
    • O 在比赛中通过 
    • Ø 赛后通过
    • ! 尝试了但是失败了
    • - 没有尝试

    Solutions


    C.牛牛的揠苗助长

    题意:

    思路:

    很重要的一点就是,这里的答案天数是具有单调性的。

    假如$ans$是满足条件的最小天数,那么比$ans$大的天数一定能满足,因为可以用魔法抵消影响。那么随着天数的增加,对应的从不满足条件到满足条件,是有单调性的,我们可以二分天数判断,最后逼近我们的答案

    接下来就是判断是某满足条件。我们肯定希望对于我们的魔法花费越少越好,明显可以转化成这个问题:在数轴上找一点使得该点到所有其他点的距离之和最小,结论就是中位数所在的点,具体证明在这里。然后判断魔法是否够用即可。对于某个天数$k$,实际上我们只需要将前$k%n$个水稻加上$1$,因为其他增长高度相同就没必要加上。

    关于二分的想法:

    对于二分我们最初的了解,是在一个一次函数中,对于要求的点$(x,y)$,已知$y$,对于包含$x$值的区间二分,根据函数值与$y$比较,逐步靠近要求的点,直到最终求出要求的点。

    严格来讲答案具有单调性的问题都可以用二分来解决,对于答案类似于一个一次函数,通过不断判断答案是否满足缩小区间。

    可能像这题最开始的时候根本不会往二分去想,甚至看完题解你还没明白为什么有单调性。实际上你可以把我们需要判断的条件看成一个函数,随着$x$的增加,对应$y$从不满足条件到满足条件,也是具有单调性的。

     

  • 相关阅读:
    bch算法生成nand flash中512byte校验和
    CFileDialog用法总结
    c++修改打印机名称
    c++连接打印机(转载)
    转发:for /f命令之—Delims和Tokens用法&总结
    c++中DLL文件的编写与实现——三步走
    GhostScript说明
    打印机API
    c++中DLL文件的编写与实现——三步走(2)
    windows程序设计基础知识
  • 原文地址:https://www.cnblogs.com/wizarderror/p/12856085.html
Copyright © 2011-2022 走看看