梗出处:请问您今天要来点兔子吗?

这篇文章主要记录一下自己学习 \(\text{ODT}\) 发生的种种。

CF896C Willem, Chtholly and Seniorious

\(\text{ODT}\) 成名题目,表示 \(\text{lxl}\) 为了防 \(\text{Hack}\) 真的是用心了。

关于 \(\text{ODT}\) 随机情况下的期望时间复杂度,请参考著名某知乎文章。

很暴力的数据结构,assign 操作是核心,剩下的基本上都是暴力区间分离,暴力统计联通区间。

期望时间复杂度 \(\Theta(n \log \log n)\)

P4979 矿洞:坍塌

为数不多 \(\text{ODT}\) 的时间复杂度是正确的题目?

只能说 \(\text{Hack}\) 数据卡了个寂寞。

有一种更加优秀的做法,但是我没想,所以下面给出一个不是很优秀的做法(也可以当做一种 \(trick\))

发现一共两个操作,一个是 assign 操作,另一个是 query

考虑时间复杂度最有可能会被摊到哪里,发现是我们亲爱的 query 操作。

因为 assign 操作可能会产生大量的散块,所以我们可以考虑在 query 的时候,对于当前同颜色联通的散块进行一次 assign,然后如果发现当前不合法了 break 维护再跳出,可以看出,这样摊下来时间复杂度会被摊到 \(O(n \log n)\)。

估计这可能也是它评蓝的原因

CF915E Physical Education Lessons

一开始脑瘫了,真的就按照题目给出的条件去硬 query 了。

发现如果硬 query 很容易被卡掉。

所以考虑修改带来的影响,发现每次修改都是 assign 操作,所以就考虑课程数的变化量 \(\Delta\) 就可以了。

然后……就做完了,时间复杂度感觉有点抽象,不是很懂。

P5066 [Ynoi2014] 人人本着正义之名

感觉这个题 \(\text{ODT}\) 很逆天,所以显然只能拿 \(80\) pts。

首先看题,是 \(01\) 序列。

然后发现,两个 assign,一个区间和,还有四个抽象的操作。

考虑那四个抽象的操作是什么:

  • 相邻按位与:\(0\) 向相邻方向吞一个。
  • 相邻按位或:\(1\) 向相邻方向吞一个。

然后……就是 \(ODT\) 维护了。

当然,正解是平衡树。

CF817F MEX Queries

简单题,考虑将集合抽象成 \(01\) 序列,这个时候发现原问题被转化成了如下问题:

  1. 区间推平 \(1\)
  2. 区间推平 \(0\)
  3. 区间取反

然后查询就是查询序列中第一个 \(0\)。

此时你会发现 \(\text{ODT}\) 还是可能会被卡掉(不过据说没有卡)。

因为我们的复杂度大头在于查询的时候是从头开始向后扫,所以只要我们前部分的 \(1\) 尽量在一个块内就可以了,此时考虑扫的过程中合并 \(1\) 的散块,这样就能保证此时复杂度的正确。

考虑如果不合并,则可能出现进行构造的数据使得前部分全是 \(1\) 的散块,则此时很容易 \(\text{TLE}\) 掉。

所以如果我们让前部分的 \(1\) 合并,则此时查询的时候复杂度在 \(O(1)\) 到 \(O(n)\) 徘徊,但是此时会出现问题,如果出题人想要卡掉合并这一个方法,则会出现修改于查询的比例不对称,如果想尽可能减小此时的比例,则必然 \(0\) 会出现的很早,所以易证此时复杂度是正确的。

CF343D Water Tree

考虑这本质上就是一个区间推平 \(01\) + 单点查询,所以此时我们显然可以使用 \(\text{ODT}\)

那么关于 \(\text{ODT}\) 的单点查询,直接 lower_bound 就好,不要像我一样乱搞一气(虽然也过了/dk)。

时间复杂度 \(O(n \log n)\)

请问您今天要来点 ODT 吗的更多相关文章

  1. 安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决

    安卓,支付宝app登录时,提示 服务器安全证书已过期或不可信任,请问怎么解决 请把手机时间调成当前时间.

  2. 请问-bash-4.1$ 出现故障的原理及解决办法?

    请问如下登录环境故障的原理及解决办法? [root@ ~]# su - luoahong -bash-4.1$ -bash-4.1$ 解答: [luoahong@ ~]$ rm -rf /home/l ...

  3. [部署]MVC4.0+EF5.0+ODT+ORACLE相关注意事项

    摘要 项目开发工具:VS2012旗舰版(.NetFrameWork4.5.1),WIN7 64bit,Oracle 11g 服务器环境:Windows Server2008 R2 64bit,.Net ...

  4. 一个类有两个方法,其中一个是同步的,另一个是非同步的; 现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法?

    一个类有两个方法,其中一个是同步的,另一个是非同步的:现在又两个线程A和B,请问:当线程A访问此类的同步方法时,线程B是否能访问此类的非同步方法? 答案:可以 验证 package com.my.te ...

  5. 请问下./在Linux下是什么意思

    请问下./在Linux下是什么意思 http://zhidao.baidu.com/link?url=1f-80KN7cdi-7XECpwXLUn6Ps4reMBL2zB6eiDk7JliwDgW6k ...

  6. 请问用Inno_Setup打包文件夹时怎么排除其中一个文件?

    请问用Inno_Setup打包文件夹时怎么排除其中一个文件? 该文件夹下有几十个文件,多个文件夹,我要一个个加进去该累死,也容易出问题.不知道能不能实现我要的目的. http://www.jrsoft ...

  7. FineReader Mac如何设置参数让导出为DOCX/RTF/ODT格式

    Mac版ABBYY FineReader OCR文字识别软件识别文档之后,可以将已识别的文本保存到文件中,还可以通过电子邮件发送输出格式受FineReader支持的已识别文本,了解了ABBYY Fin ...

  8. 阿里云ECS服务器被DDoS无解,请问我该何去何从?

    阿里云ECS服务器被DDoS无解,请问我该何去何从?

  9. Unity问答——请问一下动画状态机怎么判断动画是否播完了?

    这篇博客源自我在泰课在线的回答.链接:http://www.taikr.com/group/1/thread/233 问:请问一下动画状态机怎么判断动画是否播完了? 答: 1. 脚本参考 Animat ...

  10. 我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网

    我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网   房东给的IP地址是:192.168.1.5 255.255.255.0 192.168.1.1 2 ...

随机推荐

  1. 单节点kafka部署笔记

    1 背景 因为工作中需要对接kafka,准备在测试环境中自己部署一套,考虑方便决定部署一台单点. 2 部署 2.1 scala 2.1.1 java环境 openjdk即可,我使用的是openjdk1 ...

  2. 使用Locust进行分布式性能测试

    Locust是一个强大的性能测试工具,用于评估系统的性能和可扩展性.本文将简洁地介绍使用Locust进行分布式性能测试的步骤和优势. 步骤: 1. 配置测试环境:在主节点和多个从节点上安装相同版本的L ...

  3. IIC总线学习笔记

    IIC(Inter-Integrated Circuit)其实是IICBus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板.嵌入式系统或手 ...

  4. vulnhub billu:b0x

    知识点 SQLi.目录爆破.数据库操作.文件包含漏洞.提权.反弹shell 解题步骤 nmap扫描有80,22端口 nmap -sV -Pn -T 4 192.168.220.132 访问网页提示sq ...

  5. 三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】

    〇.前言 对于 .Net 中的编程思想还是十分重要的,也是编码出高效的程序的基础! 在使用之前了解其本质,那么用起来就游刃有余.下面来简单对比下三个编程思想,看下它们都是什么,它们之间又有什么关系. ...

  6. RedHat8静默安装was

    前言 was(websphere application server),类似weblogic.tomcat,由IBM开发的一种企业级Java容器. 系统版本:redhat 8.2 was版本:was ...

  7. go创建web项目分别在windows和linux部署

    转载请注明出处: 要在Linux服务器上运行Go的Web项目,可以按照以下步骤进行操作: 在服务器上安装Go:首先,在Linux服务器上安装Go编程语言.你可以从官方网站(https://golang ...

  8. GitOps 与 DevOps:了解关键差异,为企业做出最佳选择

    在软件开发领域,GitOps 和 DevOps 是加强协作和实现软件交付流程自动化的重要技术.虽然这两种模式都旨在提高软件开发生命周期的效率,但它们的核心原则和实施方式却各不相同. 本篇文章将帮助您了 ...

  9. quarkus依赖注入之十二:禁用类级别拦截器

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<quarkus依赖注入> ...

  10. 深入理解 Flutter 图片加载原理

    前言 随着Flutter稳定版本逐步迭代更新,京东APP内部的Flutter业务也日益增多,Flutter开发为我们提供了高效的开发环境.优秀的跨平台适配.丰富的功能组件及动画.接近原生的交互体验,但 ...