首页 > 其他分享 >P2501 [HAOI2006] 数字序列

P2501 [HAOI2006] 数字序列

时间:2023-09-17 15:00:16浏览次数:42  
标签:修改 合法 HAOI2006 相邻 序列 P2501

先来看第一问。

发现直接做要考虑两数中间的数能否变得合法,所以按套路将 \(a_i\) 减去 \(i\),这样就只要变成单调不降,只要两数合法中间的数就一定能变得合法。考虑不改变的那些数,它们一定单调不降,所以答案就是序列总长度减去最长不下降子序列的长度。

接下来看第二问,尝试观察一些性质:

  • 可能有多个最长不下降子序列,每个子序列的答案都有可能成为最小值。
  • 子序列中相邻的两项之间的任意一个数要么不小于前一项,要么不大于后一项,否则将其并入子序列长度会更长。

现在我们有两个相邻的数,都需要修改,前者大于后者。显然,将它们修改成两数之间的任意一个数代价都是最小的。应用到子序列的相邻两项 \(i\) 和 \(j\) 之间,假设某种情况第 \(k\) 个数修改成了 \(b_k\),将相同数合并,那么我们就得到了一个新的序列 \(b\)。考虑其中相邻的三项 \(x,y,z(i\leq x<x+1=y<y+1=z\leq j,b_x<b_y<b_z)\),我们将 \(b_y\) 修改成 \(b_x\) 或 \(b_z\),要么代价都不变,要么有一种代价会减小。按这样一直搞下去最终只会剩下 \(i\) 和 \(j\) 这两项,所以我们就得到了一个结论:最优解一定存在一个断点 \(k\),使得 \(b_i=b_k<b_{k+1}=b_j\)。

然后用这个结论直接暴力就行了,时间复杂度 \(O(n\log a+n^3)\),但因为数据是随机的所以根本跑不满。

标签:修改,合法,HAOI2006,相邻,序列,P2501
From: https://www.cnblogs.com/landsol/p/17708763.html

相关文章

  • P6631 [ZJOI2020] 序列
    可以将问题用形象地方式来表述。给定一排点,第\(i\)个点有它需要的覆盖次数\(a_i\)。有两种线段,一种能覆盖连续的一些点,称其为连续线段;另一种能覆盖相邻间隔为\(1\)的一些点,称其为间隔线段。现在要用尽可能少的线段覆盖所有点\(i\)恰好\(a_i\)次。发现如果没有间隔线段就......
  • 消息转换器 替代 @JsonFormat注解 完成 日期类序列化时的格式转换
      spring中的日期类从数据库读取完数据后,默认的格式其实很难看,传输给前端也不友好,所以我们一般会将日期类通过类似@JsonFormat(pattern="yyyy-MM-ddHH:mm:ss")privateLocalDateTimecreateTime;来更改日期类序列化时的格式。但这样太麻烦了,我们还可以用SpringMVC框架的......
  • 关于pta上6-2 两个有序链表序列的合并
    这是在dev上的源代码,C语言#include<stdio.h>#include<stdlib.h>typedefintElementType;typedefstructNode*PtrToNode;structNode{ElementTypeData;PtrToNodeNext;};typedefPtrToNodeList;ListRead();/*细节在此不表*/voidPrint(List......
  • 46-字典-序列解包用于列表元组字典
          ......
  • 代码随想录算法训练营-回溯算法|455. 分发饼干、376. 摆动序列
    1.贪心算法一般分为如下四步:将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 455. 分发饼干1.局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。时间复杂度:O(nlogn)空间......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。2.算法涉及理论知识概要基带数据帧频偏估计和补偿是一种用于纠正数字通信系统中......
  • m基于uw导频序列和cordic算法的基带数据帧频偏估计和补偿FPGA实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,测试结果如下:          我们可以看到,带有频偏的基带信号o_I_fre和o_Q_fre得到了有效的频偏补偿,其补偿后的数据o_Ir和o_Qr和原始的基带数据基本一致。 2.算法涉及理论知识概要     基带数据帧频偏估计......
  • 在 Java 中自定义反序列化:实现可序列化接口
    实现可串行化接口的功能Serialized接口用于管理Java默认序列化机制使用的序列化和反序列化过程。Java虚拟机(JVM)通过该类的Serialized接口实现来指示该类是否具有可序列化和反序列化的能力。该接口不仅有利于序列化,而且还使开发人员可以自由地更改默认的反序列化行为。由......
  • P2501 [HAOI2006] 数字序列
    原题是思路非常值得学习的一道题第一问:首先我们感性上觉得这题应该和LIS有一点关系,但里面有一点问题:1750505018如果我们求LIS的话,我们会认为只需要改掉505050即可,但其实我们只改掉这些数,我们是无法做到让数单增的我们发现这个限制写成数学语言即为:\(a_i-a_j\geq......
  • 为什么基于transformer的序列分类不用decoder模块?
    Transformer原本是为机器翻译设计的编码-解码(Encoder-Decoder)结构。在序列分类任务中,主要利用的是Transformer的Encoder模块来获取输入序列的特征表示,而不需要Decoder模块,主要有以下原因:解码模块主要用来生成目标序列,而分类任务只需要判别整个源序列的类别,不需要生成目......