2023/8刷题记录
2023/8刷题记录
luogu-P6885
向黑板上写数字,左右写,求所有序列的最长 并统计 的个数。
向左边放和向右边放相当于把一个序列拆成两个子序列,然后把第一个翻转接在第二个前面。
整个序列的 就相当于第一个序列的 和第二个子序列的 接起来,但要保证开头为哦那个一个数。
枚举每一个 用 记录 以及用 记录个数,整个 为 ,答案为 (因为还有一些不是 的数字可以随便放)。
经验:序列左右放,拆开。
luogu-P7154
把 头奶牛 放进 个牛棚 ,能放进去为 ,求极大匹配(看题)。
计数题。
把牛棚和奶牛从小到大排序,并且保证相同大小的奶牛和牛棚要奶牛在前。
令 表示当前考虑了第 个牛或牛棚,其中有 头奶牛没有分配牛棚,是否考虑过不被匹配的奶牛。
对于每个 分别考虑为牛和牛棚的情况,进行状态转移(转移略,可根据题目得出具体看代码)。
考虑到 可能会 所以可以滚动数组。
经验:状态优化,把状态和约束同时处理。
luogu-P8863
给定一个长度为 的序列 和一个长度为 的空数组 通过每次把两个 来使 ,求方案数。
计数。首先求出操作次数,题目可以简化成构造一个 的棋盘,放若干棋子,使得每一列都有两个棋子,第 行为 。
则按行处理, 为前 行,有 列有两个棋子。显然可以通过计算得出每列有一个棋子的个数 和没有棋子的个数 。
处理第 枚举行,枚举一个 ,有 个棋子放在了有一个棋子的列,显然组合数。
经验:转化棋盘,组合数。
luogu-CF1363F
题意见链接
显然可以转化成每次把一个 往前移动。又因为显然不会重复移动一个再付,所以相当于拿出一些字符,然后再放进去。并且向前移动。
设 为考虑了 的前缀 , 的前缀 ,拿出多少个使得它们匹配。
考虑转移
当 ;
把 放到前面去 ;
把后面的一个放到前面,要满足条件是前 个 中 的数量小于前 个 中 的数量。
luogu-CF1188C
题意见链接
设 为美观度为 的子序列个数,令 为美观度 的子序列个数,而答案
所以把 从小到大排序
枚举 。
设 为考虑前 个数,选择了 个数且美观度 的序列个数。
转移时枚举 ,满足 ,有 ,可使用前缀和优化。
经验:式子转化,前缀和优化
luogu-P7985
题意见链接
时经典题,略。
按照牛的位置从小到大考虑。
设 为考虑到第 头 和第 头 且匹配,但是还要记录上一头失配牛的位置。
注意到匹配和失配位置不是很重要,所以设 为考虑到第 头 和第 头 ,最后一头失配的是第 头牛 还是第 头牛 。
枚举下一头失配的牛,并将之前的匹配,枚举一个 匹配数,转移就可以了,时间有点高,对 进行预处理就行了。
经验:考虑实际应有状态。
luogu-CF1768F
题意见链接
特别好的 题,性质极其有趣。
观察到 。
第一个性质是如果跳跃的话,最小值一定是 或 ,否则从 跳到最小值,再从最小值跳到 一定代价更优。
第二个性质是每次跳跃步数不会超过 ,证明易证。
根据前面的两条性质可以推得时间复杂度为 ,可以通过。
本文作者:sunzz3183
本文链接:https://www.cnblogs.com/sunzz3183/p/17621355.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步