2024.2.15模拟赛总结
这次发挥很好啊,rank1,300pts,比rank2高了70pts
1|0T1
发现操作二的影响是不可避免的,就尽可能让操作1没影响,每次就删连续的相同的数字,然后统计一下即可
2|0T2
感觉思路很自然,首先只需要保留近k次操作
如果有一个横的和一个竖的覆盖两个点,就可以直接走曼哈顿距离
如果两点之间被横或竖的填满就走曼哈顿距离
如果两个横行或竖行,就找一个代价最小的另一种操作,如果都没有就-1,用线段树维护上面的操作,每一次可以直接二分或线段树二分,由于开了3s,所以稳过(也不稳,要不是我卡了常就挂了)
3|0T3
找到y坐标最小的点,然后把这个点左边的所有点设为不可走,然后从起点开始跑最短路然后枚举合并上下部分的答案
如果起点在y坐标最小的点左边,就换成找y坐标最大的点,把这个点的右边设为不可走,然后一样做即可
这样做的合法性其实就是y坐标最小的点的左侧一定会被经过,其他的不一定
4|0T4
首先,我们还是考虑推一下式子
设
我们设函数
首先,f是单调递增的,这个是显然的
然后,g也是单调递增的,这是由于f的增长速率是小于1的,就是说x每增大1,f增大小于等于1
然后我们就可以化简式子,先看A=0
A=1:
于是得到结论:point1越大越优,power越大越优
所以二分power,先以1为根做一遍,算出子树中叶子到当前点的最优的point,然后换根,每次就相应的更新即可,有许多细节和玄学精度问题,需要调参(?)
5|0续:B组T4
一道黑题!!!很有思维难度
首先设
但局部最优不一定全局最优,所以我们把所有可能的全部存下,用左偏树来存储
然后分类讨论,第一种就是从x出发的路径,代价就是x出发的路径加上子树的f的和
第二种就是子树中已经有一个覆盖了x的父边的,设当前子树为y,当前y的方案代价为k,那么x的代价就是
那么就可以先把当前节点挂着的加入堆,然后再从子树合并,合并前先把子树全局减
但是可能无法覆盖x的父边,需要删除这样的方案,每次对堆顶判断即可,然后f就取堆顶即可
__EOF__

本文链接:https://www.cnblogs.com/longzhaocheng/p/18016513.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】