首页 > 其他分享 >UOJ #807. 【UR #25】装配序列

UOJ #807. 【UR #25】装配序列

时间:2024-07-02 14:52:33浏览次数:26  
标签:25 limits siz sum sqrt UR LIS UOJ 出现

题面传送门

首先根据 Dliworth 定理,原问题等价于前缀 LIS。

考虑如何做到 \(O(n^2)\) 求出 LIS 的变化点(显然这只有 \(n\) 个)。按照值从小到大考虑,记 \(f_{i,j}\) 表示考虑到第 \(i\) 个值,长度为 \(j\) 的 LIS 最早在哪个前缀处出现,转移只需要 two-pointers 一遍就能更新。

这个转移的实质是:考虑这个值在原序列中出现的位置 \(p\),从大到小,依次找到 \(f_i\) 中第一个 \(\geq p\) 的点更新成 \(p\)。归纳一下可以说明,每种值的位置在 \(f\) 中出现的是一个前缀。也即,若 \(p+kn\) 出现了,\(p+(k-1)n\) 一定出现。

则我们可以改成记 \(c_i\) 表示第 \(i\) 个位置上的值出现了几次,然后考虑转移,假设当前值出现的位置是 \(x\),考虑 \(i=x+1,x+2,\dots n\),若 \(c_x<c_i\),则交换 \(c_x,c_i\)。

将 \(c_x\) 加一后对 \(i=1,2,3,\dots x-1\) 做同样的操作。

容易发现 \(\sum c=n\),且 \(c_x\) 每次操作都会增加,因此总共只会更新 \(c_x\) \(O(\sqrt n)\) 次,用线段树找到这些位置即可做到 \(O(n\sqrt n\log n)\),然后在 ex_test 6 T 飞了

正确的做法是用 set 维护每种出现过的值以及出现的位置,然后查询的时候在每个 set 里面 lower_bound。这样的复杂度是 \(O(\sum \log siz_i)\),其中 \(siz_i\) 是 \(c\) 的值为 \(i\) 的出现次数,要满足 \(\sum isiz_i\leq n\)。这个复杂度相当于 \(O(\sum\limits_{i}\sum\limits_{j}[siz_j>2^i])\leq O(\sum \limits_{i}\sqrt\frac{2n}{2^i})=O(\sqrt n)\),于是就可以通过了。

submission

标签:25,limits,siz,sum,sqrt,UR,LIS,UOJ,出现
From: https://www.cnblogs.com/275307894a/p/18279857

相关文章

  • 2023-2025年最值得选择的Java毕业设计选题大全:1000个热门选题推荐✅✅✅
    ......
  • IntelliJ IDEA java maven项目读取配置文件信息 java.util.ResourceBundle 方式
    一、在main目录下新建resources目录并将其设为资源文件目录  创建config.properties文件二、在pom.xml中添加下面代码 只这样打包后jar才能有配置文件<resources><resource><filtering>true</filtering><directory>src/main/......
  • Shell Lab: Writing Your Own Linux Shell
    18-213/18-613,Summer2024ShellLab:WritingYourOwnLinuxShellAssigned:Mon,July8,2024Due:Thurs,Mon,July22,2024at11:59PMLastPossibleHandin:Thu,July25th,2024at11:59PM1IntroductionThepurposeofthisassignmentistohelpyoubecom......
  • COMP9444 Neural Networks and Deep Learning
    COMP9444NeuralNetworksandDeepLearningTerm2,2024Assignment-CharactersandHiddenUnitDynamicsDue:Tuesday2July,23:59pmMarks:20%offinalassessmentInthisassignment,youwillbeimplementingandtrainingneuralnetworkmodelsforthr......
  • es启动报错exception during geoip databases update
    解决:在es配置文件中添加如下重启ingest.geoip.downloader.enabled:false  报错信息{"type":"server","timestamp":"2024-07-01T15:11:05,965Z","level":"ERROR","component":"o.e.i.g.GeoIpDownlo......
  • 昇思25天学习打卡营第13天| 数据变换 Transforms
    IT专业入门,高考假期预习指南七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验前辈,你是否愿意为准新生们提供一份全面的学习路线图呢?快来......
  • 昇思25天学习打卡营第12天|网络构建
    IT专业入门,高考假期预习指南七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验前辈,你是否愿意为准新生们提供一份全面的学习路线图呢?快来......
  • python二级DAY3:turtle
    第二章:python基本图形及海龟图体系目标:绘制简单图形一、深入理解python语言:不同编程语言的初心和适用对象:C语言:语言本质:理解计算机系统结构解决问题:性能Java:学习内容:面向对象、跨平台、运行时语言本质:理解主客体关系解决问题:跨平台适用对象:软件类专业C++语言本......
  • ts vue3 getCurrentInstance 使用,$refs 调用方式
    代码示例可以通过ref变量实现绑定$ref,或者getCurrentInstance来获取$refs/***$ref使用方式,变量名和组件的属性ref值一致*/consthChildRef=ref()console.log(hChildRef,"hChildRef")constinstance=getCurrentInstance()//constself=(instanceasComponen......
  • 已解决java.security.acl.NotOwnerException:在ACL中尝试执行非所有者的操作的正确解决
    已解决java.security.acl.NotOwnerException:在ACL中尝试执行非所有者的操作的正确解决方法,亲测有效!!!目录问题分析出现问题的场景用户类和ACL初始化报错原因解决思路解决方法1.验证所有者身份示例代码2.正确设置所有者示例代码完整示例代码主类和ACL管理代码总......