NOI春季测试前模拟赛题解
直接容斥。
总方案 - 一题出现四次 - 一题出现三次 - 一题出现两次。
一题出现两次的情况略有不同,注意考虑周全。
复杂度 。
有技巧的博弈论。
如果当前点的所有出边均为先手必胜,那么当前点为先手必败。
否则先手必胜。
于是我们可以建一个反向图,初始状态都设为 ,跑拓扑排序即可。
为什么不用记忆化呢?因为环的情况不好处理,而且卡时间。
复杂度 。
简单构造题。
假设有一个包含 个节点的简单环,那么符合要求的点对为 。
所以我们考虑构造出一些环,相邻的环连一条边,容易证明一定能凑出 。
复杂度 。
简单树形 DP。
对于当前点 ,找到其所有儿子 中最大和次大的链,拼在一起。
注意当前点为根和只有一个儿子的情况。
复杂度 。
每次找到距离最近的一对圆,加上他们相交的时间并删除。
反复操作直到没有圆。
复杂度 。
大模拟。
枚举罪犯和日期,判断有多少人说谎。
复杂度 。
F1:树上差分。
把路径上的边 ,覆盖 次、 次、多次的情况分别讨论。
复杂度 。
F2:类似 DP。
考虑每一条边覆盖几次,实际上只有三种情况。
所以对于当前节点 ,我们考虑有几条路径跨越了 到 的边。
仔细一想,我们发现可以从子树转移。
首先我们将树分为三个部分。
每个点维护起点在红色区域,终点在绿色区域且 dfs 序最小和次小的路径。
再维护起点在红色区域,终点在蓝色区域且 dfs 序最大和次大的路径。
这样就可以由子树传递上来,然后处理一下只保留四条特殊路径即可。
复杂度 。
二分答案。
check
的时候用队列记录评测任务,然后从左到右贪心地评测即可。
如果超过时间 ,或者最后队列不为空,返回 false
。
复杂度 。
F1:决策单调性+分治优化 DP。
首先可以断环为链。
枚举起点 ,定义 表示在 中开 扇门的最小代价。
然后就有了单次操作 的 DP,即:
其中 ,可以预处理。
观察发现,如果 的最后一扇门在 ,那么对于所有 , 的最后一扇门在 左侧,反之同理。
于是可以枚举 和 ,对于 到 分治处理。
具体可以定义 表示当前有 扇门, 第一维范围为 ,决策范围为 。每次计算出 ,暴力算出 的最优决策点 ,然后递归 和 。
复杂度 。
F2:斜率优化DP。
待更。
容易想到一条路径的两个端点必定为这棵无根树的叶子节点。
我们考虑 “剥洋葱”,每次找到最外层的叶子节点,答案加上 ,其中 为叶子节点的个数。
然后拓扑排序去掉最外层,直到把整棵树都去除。
至于证明,仔细想想就明白了。
复杂度 。
考虑 的暴力。
以 为关键字从小到大排序,对于当前节点 ,找到前面所有纵坐标小于 的纵坐标的点集的最长下降序列,直接从后往前找即可。
考虑分治优化。
假设当前区间为 ,计算出 ,递归处理 和 。
然后将 以纵坐标为关键字从小到大排序。
左边维护一个数组 记录下降序列,右边维护一个数组 记录上升序列。(本质上就是单调栈)
找到 中倒数第二个元素的纵坐标 ,并在 中二分,找到有多少个点的纵坐标大于 即可。
复杂度 。
本文作者:HQJ2007
本文链接:https://www.cnblogs.com/HQJ2007/p/17561605.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】