刷题总结

同步于Luogu bolg然后发现洛谷渲染的还没cnbolgs好

题单

T1 AT_arc174_a A Multiply

题意简化

有一个长度为n的序列a,你可以选择一个区间,让区间离的数全部×c,求a序列的最大值。

  • 1  N  3 × 105
  • 106  C  106
  • 106  Ai  106

分析

观察数据范围,可发现c有正负之分,则想要让序列总长度最大,分类讨论:

  • c<0,则需要使用最小的区间×c
  • c>0,则用最大的区间×c
  • c=0,则使用最小的区间×c

所以要求两个东西:区间最大最小值
发现1n105,考虑DP

  1. 定义状态:dpi or pdi:以i结尾的区间最大/最小值
  2. 答案:maxdpi or minpdi
  3. 状态转移方程:由于区间是连续的,所以dpi的状态只能由dpi1得到
    对于每个dpi
    一.由dpi1+ai,得到新的子段和
    二.自己单独成一个子段
    得出dpi=max(dpi1+ai,ai)
    pd同理
  4. 边界条件:dp设极小值,pd设极大值

DP值求完了,接下来计算总序列和:

  • (c>0)
    一.序列不变,因为可能序列全是负数,乘后还变小了
    二.减去区间最大值,再加上区间最大值×c
  • (c0)
    一.序列不变,因为可能序列全是正数,乘后还变小了
    二.减去区间最小值,再加上区间最小值×c

Code

link

T2 AT_dwango2017qual_b ニコニコレベル

题意简化

给你一个字符串,里面可能有数字或"?",你可以将问号替换成数字,求替换后这个字符串里面由"25"重复得到的字符串的最长长度
字符串长度小于等于1e5

分析

发现数据需使用Θ(n)orΘ(nlogn)做法通过,考虑DP

  1. 状态: dp1i:第i个位置是2时的答案,dp2i:第i个位置是5时的答案
  2. 答案:因为答案必须以5结尾,所以得出答案为maxdp2i
  3. 方程:对于每个"2"或"?":
    可以由上一个字符为5时的答案更新,并且不用考虑前一个数,可以直接单独成段
    对于每个"5"或"?":
    可以由上一个字符为2时的答案更新,但是要考虑前一个数,如果前一个数不是2,即dpi1=0,则不能更新答案
  4. 边界:dpi=0

Code

link

T3 AT_soundhound2018_summer_final_b Neutralize

题意简化

有一个序列a,你可以进行任意次将k个连续的数变为0,求最后数组的总和最大值

分析

由于有k的限制条件,显然不能使用一些暴力或暴力优化的方法通过,于是考虑DP

  1. 定义状态:dpi,1/0:表示前i个数,无k/有k的限制时的前i个数的答案

  2. 答案:max(dpn,0,dpn,1)

  3. 状态转移方程:
    dpi,0=max(dpi1,0,dpi1,1)+ai
    i1k+10
    dpi,1=max(dpik,0,dpi1,1)

  4. 边界条件:dp[0][0]=dp[0][1]=0,dpi,0/1=inf

Code

link

T4 AT_abc336_d Pyramid

题意

金字塔型序列:[1,2,,k1,k,k1,,2,1]
给定一个长度为n的序列a,可以进行重复性的两种操作:

  1. 将序列中某个数的大小减一
  2. 删除第一个或最后一个数

求能够形成的金字塔型序列的最大长度。

分析

比较常见的套路,洛谷也有类似的题:P1091 合唱队形
从左往右维护一个dpi:以i作为结尾的最长左金字塔序列的长度
从右往左维护一个pdi:以i作为结尾的最长右金字塔序列的长度
我们以dpi为例,分别来观察一下

  • 1 1 2 3
  • 2 1 2 2
  • 3 3 1 2

按照题目中能把数变小和删除前后数字的操作,能推出当前的dpi要从前面的dpi1和当前ai较小的那个推过来:
dpi=min(dpi1+1,ai)

pd同理,最终枚举每个数作为金字塔尖,左边金字塔序列长度和右边金子塔序列长度中取小的那个能够形成的金字塔序列长度,然后维护一个最大值。

Code

link

posted @   KK_SpongeBob  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
点击右上角即可分享
微信分享提示