首页 > 其他分享 >题目乱做笔记 Part2

题目乱做笔记 Part2

时间:2024-06-03 15:13:31浏览次数:17  
标签:题目 复杂度 笔记 合法 区间 Part2 verb 序列 操作

CF1824D

考虑如何快速计算 \(g(i,j)\),设 \(nxt_i\) 表示 \(i\) 后面第一个等于 \(i\) 的数,那答案显然是最大的 \(p\) 满足不存在 \(k \in [i,p-1],nxt_k>j\)。

从大到小扫描 \(i\) 这一维,问题变成区间覆盖,区间求历史最值和,显然可以直接上线段树,但是需要卡常。

同时也可以使用颜色段均摊将区间覆盖转化成区间加,这样会难写一些,不过无需卡常。

CF1552G

首先需要发现一个结论:对于所有序列合法等价于对于所有 \(\verb!01!\) 序列合法。

证明:对于所有序列,考虑将 \(\le x\) 的数设为 \(0\),\(>x\) 的数设为 \(1\),那么若 \(x\) 取遍所有值生成的 \(\verb!01!\) 序列均合法,原序列显然合法。

但是现在依然只能做到 \(\Theta(2^n)\) 的复杂度,考虑优化。

优化的思路是当我使用过第 \(i\) 次操作后,被第 \(i\) 次操作包含的那些位置一定是前面一些 \(0\),后面一些 \(1\)。

那么考虑对操作搜索,若一个位置还没有被操作覆盖,我们设它为 \(\verb!?!\),那么对于当前搜到的操作,它包含的位置一定是一些 \(\verb!0/1!\) 和一些 \(\verb!?!\),注意到 \(\verb!0/1!\) 是在之前的枚举中确定的,而 \(\verb!?!\) 我们只关心它们之间有几个 \(\verb!0!\) 几个 \(\verb!1!\),那么复杂度就是每层的 \(\verb!?!\) 个数乘积,显然是 \(\Theta((\dfrac{n}{k}+1)^k)\)

标签:题目,复杂度,笔记,合法,区间,Part2,verb,序列,操作
From: https://www.cnblogs.com/tx-lcy/p/18228912

相关文章

  • 《Python进阶》学习笔记
    《Python进阶》学习笔记部分原创,仅个人关于《Python进阶》的学习笔记importwarnings#忽略警告warnings.filterwarnings("ignore")*args的用法deftest_args(f_arg,*argv):print("第一个参数是:",f_arg)forarginargv:print("其他argv参数是:",arg)......
  • idear集成开发工具学习笔记
    idea导入git项目Filw-->New-->ProjectfromVersionControl-->Gitidea控制台tomcat日志中文乱码1、找到本地tomcat的conf目录下的logging.properties,对于控制台output报错的情况,将下图位置的编码格式,改成gbkjava.util.logging.ConsoleHandler.encoding=GBK2、TomcatLocathost......
  • html语言学习笔记
    语法<p></p>段落<br/>段内换行<h1~h6>标题<pre></pre>预留格式文本,保留空格和空行,不用写<br/>和&nbsp;<span></span>行内组合用法:组合行内元素,方便css样式来格式化。例子:<styletype="text/css">span{color:blue;font-weight:bold;}</......
  • 关于题目集4~6的总结
    前言4~6次大作业题目的综合性较强,题目量大且给定的信息多,在完成题目要求之前做好题目需求分析必不可少,先从总体上把握题目大意,然后分模块实现各个功能。三次大作业重点考察面向对象编程的继承和多态,以及java正则表达式捕获信息,总体上说,这三次题目集的大作业的题目实用性强,与生......
  • Python学习笔记(一)
    PS:这篇文章是以一个学习者的角度来汇总知识点以及教程,对于想学习Python的入门者也会比较友好,想学习python可以先收藏,我会慢慢持续更新。学艺不精,如有纰漏,敬请指正。需要安装配置python和Pycharm软件可以移步这篇文章,有详细的教程。传送门:python及pycharm安装配置-CSDN博客P......
  • PTA第4~6次题目集的总结
    目录一.前言二.设计与分析三.采坑心得四.改进建议五.总结=================================================================================================================================前言题目总结第4次题目集题目答题判题程序-4设计实现答......
  • Lenovo笔记本F1-F12功能快捷键分别是什么功能
        在日常工作和学习中,我们经常需要使用笔记本电脑来完成各种任务。为了提高操作效率,许多用户会选择使用键盘上的快捷键。Lenovo笔记本的F1-F12功能快捷键为用户提供了一种快速访问计算机功能和设置的方式。    F1键通常用于打开帮助和支持中心,而F2键则用于......
  • PTA题目集4~6的总结
    1.前言知识总结:1.StringBuilder是一个可变的字符序列,与StringBuffer类似,但不保证同步(即线程不安全)。它被设计作为StringBuffer的一个简易替换,适用于单线程环境下字符串的频繁拼接和修改操作。在大多数情况下,由于少了同步的开销,StringBuilder在性能上优于StringBuffer。2.appe......
  • DataFrame基本操作笔记
    目录DataFrameDataFrame特点:创建实例-使用列表创建实例-使用字典创建实例-使用NumPy数组创建实例-使用Series创建实例-使用ndarrays创建返回数据DataFrame的属性和方法访问DataFrame元素访问行:使用行的标签和.loc[]访问。修改DataFrame添......
  • Go 语言学习笔记之数组与切片
    大家好,我是码农先森。数组与切片的区别在Go语言中,数组和切片是两种不同的数据结构,它们之间有以下主要区别。参数长度:数组(Array):数组的长度是固定的,在创建时就需要指定数组的长度,无法动态改变;只有长度信息,通过len()函数获取。切片(Slice):切片是对数组的一个引用,底层使用的是......