国庆day1补题
国庆day1补题
单调数据结构
单调栈的性质:
1.单调栈里的元素具有单调性
2.元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除
3.使用单调栈可以找到元素向左遍历第一个比他小的元素,也可以找到元素向左遍历第一个比他大的元素,具体的,假设要找到一个元素向前第一个比它大的数,就是维护单调减的单调栈,加入一个数弹到最后时的前面那个数(这个数不再弹出)。向后第一个比它
单调队列相当于另外又维护了一个下标(或别的)可以从开头删除元素
CF280B Maximum XorSecondary
题意:
给出一个长为n的正整数序列。定义一个序列的所有数异或的结果为其最大值和次大值的异或值。求在此序列的所有子串(即要求连续一段区间)中价值最大是多少。
第一行一个整数n(
第二行n个由空格隔开的正整数
输出仅一个整数,即最大异或和。
题解:
不妨枚举所有可能出现的最大值和次大值,由于若以最大值枚举的话难以计算(因为对应一个最大值的话次大值有很多种可能),所以我们枚举次大值,具体的说就是遍历数组
容易发现把这个数弹出的数就是第一个它大的数。
CF1407D Discrete Centrifugal Jumps
题意:
有
现在你在楼
题解:
显然dp,考虑如何转移,第一点显然是
- 如果
,那么说明 是 后第一个比 大或等于的数,这用性质三,用单调递减的单调栈维护即可,每次有弹出的数都是贡献的一部分 - 对于
,着说明了 只能取 之前第一个比 大的位置,同样可以用单调栈来维护
具体来说维护一个单调递减的单调栈,每次弹出去的所有比
[ABC352D] Permutation Subsequence
题意:
给你一个
长度为
从 到 单调递增。- 子序列
可以在重新排列后成为 个连续的整数。
求所有好的索引序列中
题解:
比较容易,可以先做一个映射,记录
CF1195E OpenStreetMap
题意:
给定一个
题解:
单调队列好题,注意二维的转化,假设我们要求以
贪心
一种很意识流的想法,但对问题进行详细分析便可得出策略,有两类常用方法:
- 归纳法:每一步都保证是最优解
- exchange argument:交换两步操作,答案不会更优(简单来说)
[NOIP2012 提高组] 国王游戏
略
题解:
我们考虑交换相邻的两个对于结果的影响,假设交换前为
考虑若要满足这个式子,则会出现两种情况:
两个都可以进行化简:
第一种情况因为
CF1552E Colors and Intervals
题意:
构造
- 第
个和第 个格子的颜色都是 。 - 每个格子被包含不超过
次。
题解:
可以有一个妙的想法,构造出来机组划分,每一组划分里面的区间互不相交,每个划分包含k-1个区间,这样绝对可以满足第三个条件。
考虑每一组内该如何考虑:
使用贪心,假设当前已经在这一组中前面的已经划分出来,后面我们选择r端点最小的满足
证明也是妙妙:
可以看luogu题解
倍增
不想写了
分治
不想写了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构