「Solution Set」JOISC 2022
Day1 监狱
首先我们感性理解:每名囚犯一定是依次走到自己的目的地的。因为如果起点或终点挡着别人的路,让他先走到目的地就行了。而在中间的话还容易挡着别人的路。
所以如果一个人的起点在另一个人的路径上,那么这个人必须先走,如果一个人的终点在别人的路径上,那么这个人必须后走。
然后就随便用树剖加线段树维护一下就行。
为什么我几个月前写了一遍这个还没过当时却死活想不出来为什么明明这题很简单的啊然后我还跑到别人的博客下面问智障问题半年后感觉尴尬的要死
Day1 京都观光
我们观察一下一个情况
l r
i|____|
| |
j|____|
| |
k|____|
如果我们从 处拐弯走到 ,如果想要走的比从 拐弯,从 拐弯都要近的话,那我们列一下式子:
然后乱移一下项,得到这么个东西:
你发现中间这项没有用,因为是跟纵向道路有关的。
所以:
然后发现这是个像斜率的东西。如果我们把他们连起来,由于横坐标递增,那么如果前一段的斜率小于后一段,那么这个点就是无用的。也就是说,我们需要保证斜率单调递减,然后发现这应该是个凸包。
然后我们去掉了完全无用的道路。
横纵都去掉了之后我们再分析在一个点上,向左走还是向右走更优。
那么得到的就是
其实就是把两个斜率单调递增的凸包上的点合并成一个。可以用双指针随便写。
但仔细想就知道就是在图上贪心地走,怎么走更优就往哪边走。
Day1 错误拼写
乱画一下图就发现
如果要求
假设 ,那么等价于要求从 到 一开始必须是连续相同字符,然后第一个不同的位置要求前一个大于后一个。
反过来也是一样。
那么我们考虑设计这样一个 DP 方程: 表示到 个位置,自己是字母 的方案数。
转移的时候从后向前转移。我们发现这些限制形成了两类的区间。我们假设 的是一类区间,否则是二类区间
先考虑暴力转移。我们可以枚举一个转移点 ,从 到 的所有字母相同,然后枚举 的位置上放什么字母。如果放的比原来的大,那么就需要考虑所有的一类区间,如果当前存在一类区间的 大于等于 ,那么就一定不行。现在复杂度 ( 是字符集大小)
所以我们考虑优化暴力。我们考虑将转移分开,分成变大或变小两种。我们先动态维护 表示先从字母 连续,然后下一个变大的方案数,也维护一个 就是下一个变小的方案数。然后这样可能会有多算的。仔细想一下,多算的只有可能是左端点在 上的。因为如果是别的位置的区间,那么前面的转移就已经排除掉了。所以我们对两种情况维护两个堆什么的,如果以前可以的转移点现在不行了,就直接取出来,然后减掉贡献,再出堆就行。
这样做可行的原因是变化的那个点一定是在 后的一段区间,而且如果在某个位置发现不行了,那么之后一定不行。
我说的好抽象啊。语文还是太差了。
Day2 团队竞技
好像可以当成巨大数据结构做。
如果三个值分别是最大值的人没有别的属性是最大值,那么就选他们三个就行了。否则那个有重复的老哥怎么选都不可能被选上。那么把他扔了就行。
然后这样重复排除人选,直到最大值的三个人满足条件。那么这三个人就一定行,不用继续找了。
Day2 复制粘贴 3
我们先考虑如果使用复制粘贴操作更好的话,那么最好的操作方式是 之类的, 是重复粘贴的那个,而 是中间手敲的字符。
正常考虑 DP 的话发现它不一定是从前向后转移的所以前 个位置的那种 DP。
所以我们考虑区间 DP?
假设 表示 打出来的最小步数。
我们先设 表示 打出来,但是 必须是复制粘贴的那个。
再设 表示 打出来,但是 必须用来复制粘贴, 是用来复制粘贴的串的末尾。
我们发现 能用 转移, 能用 转移出来,然后我们只需要考虑 怎么求。
如果 已知,那么我们可以找到下一个不相交的相同的区间,然后转移到 。因为我们找的是下一个不相交的,所以对于每个 ,转移点总数是调和级数。
然后我们就知道了 了,可能对于每个 这一行,需要求一个前缀最小值之类的。
Day3 洒水器
你发现距离 ,所以应该随便做。
如果修改到父亲上的,直接暴力跳的就行。
如果修改到子树里的,就在自己打个 tag,查询的时候向上跳 40 步就行。
Day4 一流团子师傅
我们考虑直接对每个团子分组,将新来的团子加入到还没有出现这种颜色的串上。
那问题就是怎样快速判断哪个串开始没有这种颜色的。
我们想到可以二分,因为这种颜色的团子一定是前面一段有,后面没有的。
具体的判断就是把全集排除掉 的区间的所有团子加上当前要考虑的团子。如果不排除当前要考虑的团子,那么能组成的串的数量应当是大于等于 ,但是删掉这一个之后,如果 以及之前是有这个颜色的,那么一定会减少一个串,使得串的数量小于 ,这样就能直接二分了。
总次数大概是 的,应该能过,过不了就 random_shuffle
一下
本文作者:cc0000
本文链接:https://www.cnblogs.com/cc0000/p/17497161.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步