首页 > 其他分享 >Level Up

Level Up

时间:2024-08-18 22:26:18浏览次数:12  
标签:二分 怪兽 cnt log Level 复杂度 Up 等级

法一:题面给出了\(k,2k,3k\)这些数,容易想到调和级数。于是尝试对于每个\(k\),我们取找出升级的每段(也就是对怪物序列进行划分,每一段的等级相同,相邻两段等级相差一),然后看这篇题解;所以以后遇到处理\(\overset{r}{\underset{i=l}{\sum}}[a_i>x]\)这种式子就可以想根号算法

法二:转换考虑对象。考虑一个怪兽什么时候会被打到。一个感性的想法就是\(k\)越大,需要打的怪兽就越多,于是到同一个怪兽的等级就越低,怪兽就会从逃跑变成应战。于是有一个很自然的想法,设\(f[i]\)表示第\(i\)个怪兽应战的最低的\(k\)。求\(f[i]\)的时候,只需二分\(k\),并查找\(1\) ~ \(i-1\)中的\(f\leq k\)的个数,设为\(cnt\),如果\(\lfloor\frac{cnt}{k}\rfloor+1\leq a_i\),那么这个\(k\)就可以,否则就不行。上述过程可以用树状数组优化,时间复杂度为两个\(\log\)(当然遇到树状数组加二分可以想到树状数组加倍增,将时间复杂度优化为一个\(\log\));然而我考试的时候是想到这里的,但是没有敢写,为啥?因为有另一种想法,就是\(k\)越大,应战的怪兽就越多了,可能会抵消\(k\)增大的影响,导致升级还是不会更慢(甚至更快),也就是说没有单调性(从数学表达式\(\lfloor\frac{cnt}{k}\rfloor\)也可以看出来,\(k\)增大,\(cnt\)肯定也增大的),那么上述过程就错了;这个时候,考场就直接写嘛,这代码40行太好写了吧,这场rating纯属白给。重新做的时候想出来了单调性证明方法了。下面给出单调性证明:设\(k_1>k_2\),那么当我们等级变成\(2\)的时候,肯定是前者所在的怪兽的下标更大,此时我们将所有等级为\(1\)的怪兽移除(相当于这些怪兽没有用了),然后再计算\(k_1,k_2\)两种情况下,我们等级为\(2\)的地方。不难知道,此时对于\(k_1\),下标更大了,而且由于\(k_1>k_2\),说明我们对怪兽的需求数量也更大了,于是可以知道升到\(2\)级的坐标肯定会更大。其余情况同理可证

法三:法二给出了单调性证明。现在考虑只求一个怪兽的\(f\),那么直接二分,并且每次暴力循环,时间复杂度为\(O(n\log n)\);如果现在要对\(n\)个怪兽求解,时间复杂度就是\(O(n^2\log n)\);遇到这种“单个二分没问题整个二分就超时”就可以上整体二分了

标签:二分,怪兽,cnt,log,Level,复杂度,Up,等级
From: https://www.cnblogs.com/dingxingdi/p/18366220

相关文章

  • Jupyter 二次开发思路(1)
    上篇文章介绍了Jupyter生态及重要组件的原理。基于之前的内容,本文介绍Jupyter二次开发的思路。首先介绍项目的需求,接着进一步介绍架构设计,进行demo的实现,最后进行总结。需求实现图数据管理分析BI平台的NotebookService,具备数据的探索、执行分析任务、sql操作、sp......
  • pve 8.2.2 解决unsupported Ubuntu version '24.04'
    解决unsupportedUbuntuversion'24.04'问题描述:我在重装pve8.2.2恢复我的容器和虚拟机的时候,发现24.04的容器恢复时出现了如下错误:TASKERROR:unabletorestoreCT104-unsupportedUbuntuversion'24.04'在pve的论坛可以看到这篇文章:Ubuntu24.04-unsupportedUbunt......
  • Upload-Lab第10关:点空点绕过绕过文件上传校验
    简介在upload-lab的第10关,我们面对的是一个常见的文件上传防护机制:黑名单验证。黑名单验证是指系统通过拒绝特定扩展名或内容类型的文件来防止恶意文件上传。然而,这种防护机制通常存在漏洞,可以被绕过。下面是第10关的源码:$is_upload=false;$msg=null;if(isset($_......
  • Vue 报错error:0308010C:digital envelope routines::unsupported
    目录Vue报错error:0308010C:digitalenveloperoutines::unsupported方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回车)并按照说明粘贴这些:方法2.安装vnm及node版本方法3.在项目package.json文件中增加配置Vue报错error:0308010C:digitalenveloperoutine......
  • Object Detection: Non-Maximum Suppression (NMS)
    ObjectDetection:Non-MaximumSuppression(NMS)https://kikaben.com/object-detection-non-maximum-suppression/ObjectdetectionmodelslikeYOLOv5andSSDpredictobjects’locationsbygeneratingboundingboxes(showninbluerectanglesbelow).However,......
  • puppeteersharp爬取网页数据
    官网https://github.com/hardkoded/puppeteer-sharp安装创建控制台项目,安装PuppeteerSharp18.1.0编写代码安装chromeasyncstaticTaskMain(string[]args){//如果Chromium不存在则先下载varbrowserFetcher=newBrowserFetcher();//获取安装的浏览......
  • Python导入包时提示“attempted relative import beyond top-level package”的解决办
    一篇很好的文章:python跨目录导包失败python不同路径导入包错误 在涉及到相对导入时,package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。文件夹被python解释器视作......
  • 【vue讲解:vue3介绍、setup、ref、reactive、监听属性、生命周期、toRef、setup写法】
    1vue3介绍#Vue3的变化 -vue3完全兼容vue2---》但是vue3不建议用vue2的写法 -拥抱TypeScript -之前咱们用的JavaScript---》ts完全兼容js-组合式API和配置项API vue2是配置项apivue3组合式api#vue4必须要用2vue3项目......
  • LookupError: Resource averaged_perceptron_tagger not found.解决方案
      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学......
  • JAVA 解析html 类型字符串(使用jsoup)
    1.引入pom文件<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.17.2</version></dependency>2.使用在线解析html工具,自己先看清html内容 (在线推荐:https://coding.tools/cn/html-beautifier#googl......