刷题总结
同步于Luogu bolg然后发现洛谷渲染的还没cnbolgs好
题单
T1 AT_arc174_a A Multiply
题意简化
有一个长度为
分析
观察数据范围,可发现
,则需要使用最小的区间 ,则用最大的区间 ,则使用最小的区间
所以要求两个东西:区间最大最小值
发现
- 定义状态:
:以 结尾的区间最大/最小值 - 答案:
- 状态转移方程:由于区间是连续的,所以
的状态只能由 得到
对于每个 :
一.由 ,得到新的子段和
二.自己单独成一个子段
得出
同理 - 边界条件:
设极小值, 设极大值
DP值求完了,接下来计算总序列和:
一.序列不变,因为可能序列全是负数,乘后还变小了
二.减去区间最大值,再加上区间最大值
一.序列不变,因为可能序列全是正数,乘后还变小了
二.减去区间最小值,再加上区间最小值
Code
T2 AT_dwango2017qual_b ニコニコレベル
题意简化
给你一个字符串,里面可能有数字或"?",你可以将问号替换成数字,求替换后这个字符串里面由"25"重复得到的字符串的最长长度
字符串长度小于等于1e5
分析
发现数据需使用
- 状态:
:第 个位置是 时的答案, :第 个位置是 时的答案 - 答案:因为答案必须以
结尾,所以得出答案为 - 方程:对于每个"2"或"?":
可以由上一个字符为 时的答案更新,并且不用考虑前一个数,可以直接单独成段
对于每个"5"或"?":
可以由上一个字符为 时的答案更新,但是要考虑前一个数,如果前一个数不是2,即 ,则不能更新答案 - 边界:
Code
T3 AT_soundhound2018_summer_final_b Neutralize
题意简化
有一个序列
分析
由于有
-
定义状态:
:表示前 个数,无 /有 的限制时的前 个数的答案 -
答案:
-
状态转移方程:
当 时
-
边界条件:
Code
T4 AT_abc336_d Pyramid
题意
金字塔型序列:
给定一个长度为
- 将序列中某个数的大小减一
- 删除第一个或最后一个数
求能够形成的金字塔型序列的最大长度。
分析
比较常见的套路,洛谷也有类似的题:P1091 合唱队形
从左往右维护一个
从右往左维护一个
我们以
- 1 1 2 3
- 2 1 2 2
- 3 3 1 2
按照题目中能把数变小和删除前后数字的操作,能推出当前的
Code
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18573175/problem_ykm
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体