首页 > 其他分享 >【XSY3312】路径(path)(trick)

【XSY3312】路径(path)(trick)

时间:2022-10-30 11:14:15浏览次数:52  
标签:XSY3312 二分 log trick 情况 path 最优 check

原题就不说了,记录一下其中要用的一个 trick。

定理:对于一个 \(1\sim n\) 的随机排列,它的前缀最大值的期望个数为 \(O(\log n)\)。

证明:考虑元素 \(x\) 作为前缀最大值的概率,这要求 \(x+1,\cdots,n\) 都在 \(x\) 后面出现,即在排列中抽出 \(x,x+1,\cdots,n\) 这几个数,其中 \(x\) 排在第一个的概率,为 \(\frac{1}{n-x+1}\)。那么前缀最大值的期望个数为:

\[\sum_{x=1}^n\frac{1}{n-x+1}=\log n \]

那么对于一类问题:

我们需要求一个问题的最优解,而这个问题可能有 \(n\) 种情况,每种情况之间相互独立,整个问题的最优解是每种情况最优解的最优解,且对于每种情况,其最优解都是可以用二分求的(能 check)。那么我们先对情况 random_shuffle,然后枚举每一种情况,记录前面枚举的所有情况的最优解,并判定这个最优解是否合法(这种情况中是否可能有比之前的最优解更优的解),若有则按原来的方法二分求,若无则跳过。那么根据上面的结论,不跳过的次数的期望是 \(O(\log n)\) 次。设 check 的时间复杂度为 \(O(C)\),单种二分次数为 \(O(V)\),这样时间就是 \(O(nC+C\log n\log V)\),原来是 \(O(nC\log V)\),可以少掉一个 \(\log V\)。

换言之,需要多组二分求最优解的时候,如果这些二分之间相互独立,可以打乱顺序,每组二分前先 check 前面得到的答案,这样期望真正需要二分的组数为 \(O(\log n)\)。

标签:XSY3312,二分,log,trick,情况,path,最优,check
From: https://www.cnblogs.com/ez-lcw/p/16840746.html

相关文章

  • go gopath配置
    cannotfindpackage"github.com/go-playground/validator/v10"inanyof:   /home/thk/local/go/src/vendor/github.com/go-playground/validator/v10(vendortree......
  • python 爬虫 ----- xpath
    xpath是在XML文档中搜索内容的一门语言html是xml的一个子集 xml代码示例"""<book><id>1</id><name>野花遍地香</name><price>1.23</price><......
  • 导出报错cannot be resolved to absolute file path because it does not reside in t
    SpringBoot项目打包部署,读取jar里面的文件报错500,异常日志关键提示cannotberesolvedtoabsolutefilepathbecauseitdoesnotresideinthefilesystem报错定位......
  • some tricks
    sometricks多从宏观角度想问题,别被微观困住了十进制快速幂防止写高精树的重心在树的dfn序列上的带权中点的到根的路径上组合数:\(\binom{n}{m}=\binom{n-1}{m-1}+\bi......
  • Educational Codeforces Round 138 F Distance to the Path
    DistancetothePath思维+树链剖分首先与树链剖分无关,先考虑如果只更新一个点的情况因为更新一个点,它既能向根的方向更新,又能向子树方向更新,非常难维护,于是我们只......
  • Python中path中使用正则,及路由分发
    Pythonweb模版Django-15设置urls.py中的urlpatterns,用path方法时不能用正则表达式https://blog.csdn.net/Pansc2004/article/details/80495723      urlp......
  • 解决:DeprecationWarning: executable_path has been deprecated, please pass in a Se
    参考了网上已有的资料,原因是因为:driver=webdriver.Chrome({PathofChromeDrive})填写了路径之后,会出现报错的情况;解决方法:fromselenium.webdriver.chrome.service......
  • *PAT_甲级_1053 Path of Equal Weight (30分) (C++)【数组排序/DFS】
    目录​​1,题目描述​​​​ 题目大意​​​​输入​​​​输出​​​​2,思路​​​​数据结构 ​​​​如何排序 ​​​​如何设计DFS算法​​​​3,心路历程​​​​4,代......
  • LeetCode_Array_64. Minimum Path Sum (C++)
    目录​​1,题目描述​​​​2,思路​​​​3,代码【C++】​​​​4,测试效果​​1,题目描述Givenamxngridfilledwithnon-negativenumbers,findapathfromtopleftt......
  • LeetCode_Array_63. Unique Paths II (C++)
    目录​​1,题目描述​​​​2,思路​​​​3,代码​​​​4,测试结果​​1,题目描述Arobotislocatedatthetop-leftcornerofamxngrid(marked'Start'inthediagra......