luogu 模拟赛
A.带余除法
我们不难考虑找出
B.奖牌排序
不难考虑到分别按照三个关键字排序,然后对于每个小朋友找到每个关键字下的排名(同分取第一个),取一个最小值就做完了。
C.三目运算
每年必出的大模拟,但这题好像还有图论?我们考虑找出每个 ?
匹配的 :
,这个是不难做的,用一个栈就行。
接下来考虑把一个分段常数表达式看成三部分:?
前面的,?
和 :
之间的,:
后面的,记为
接下来考虑
这种结构会导致每次遍历是
发现慢的原因是每次询问都要遍历一次树,那么考虑所有询问一起遍历。
具体地,把所有询问离线下来,扔到一个序列里排序去重,每个树上的点必然把一部分分到左子节点,另外一部分分到右子节点。只需要记录这个点处理的是序列中的
D.配对序列
看到最优化问题,不难想到贪心或者动态规划。仔细构造几组样例就可以发现贪心假了,于是考虑动态规划。
设
不难得出转移方程:
暴力转移时间复杂度是
E.商店砍价
不难观察出一个结论:最后剩下一起的数不会太大,事实上最多只有
F.水杯降温
首先有一个简单的小性质,我们改变操作的顺序不会造成影响。于是我们不妨设先进行操作二再进行操作一。于是考虑什么情况下只做操作一也合法。
不难发现父亲节点的值不能小于子节点的值,因为只可能出现子节点加的东西不少于父亲节点加的东西的情况。同时需要满足根节点的值不大于
于是我们考虑每个
假设我们当前二分到的
-
。 -
。 -
。
于是最后有解的要求就是
G.反回文串
特殊性质给的相当好的一道题。遇到这种神秘构造一般特殊性质都会有一些提示,所以先看特殊性质。
下面记出现次数不小于
不难得出
考虑把所有字母按照字典序存进数组
下面讨论一下存在绝对众数的做法:
不妨设绝对众数所在字母为
首先特判绝对众数出现的次数不小于
剩下的
H.超级演出
我们先考虑一个比较优秀的暴力。离线下来所有询问,从序列头扫描到序列尾,对于每个点
只需要每次加入一个点的时候使用其出点进行更新即可。同时设当前的点为
不难发现这样做的瓶颈在于每次用出点更新自己的过程。因为如果这个点的出度非常大,时间复杂度就是平方级别的了。
于是我们考虑根号分治。设
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】