模拟测试68
T1:
最优矩形面积为最小长乘最小宽。
将所有矩形按照x降序排序,从上到下扫,同时将y装进堆中,还没有扫到的都视作删除。
每次pop掉一个最小的,表示删除掉这个矩形。
然后用堆中最小值乘当前x更新答案。
时间复杂度O(nlogn)。
T2:
最小点集即为每个点到公共lca的路径的并。
然后就成为查询前驱后继的问题。
维护树上主席树,即每个点继承父亲的节点。
然后可以在主席树上查。
时间复杂度O(nlogn)。
T3:
发现两个数的关系由最高不同位决定。
然后可以用trie树预处理出每一位为1/0时能够产生多少贡献。
暴力枚举情况过不了所有测试数据。
考虑二分答案,先二分出一个f(res),再二分出res。
但是检验还是会超时。
可以meet in the mid,预处理出前一半和后一半的所有情况,分别排序。
枚举前一半,可以在后一半里upper_bound出个数。
时间复杂度O(nklogn)。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步