NOIP模拟赛记录
NOIP模拟赛记录
2023.10.23 比赛记录
A. 公园
直接 dijkstra
即可
B. 括号
考虑这样的贡献,每个右括号,考虑先找到一个左括号与它匹配,
此时考虑在这个匹配左侧加上一个括号序列
可以用一个 stack
记录剩下 个时的贡献
D. 运算
考场想了个线段树优化建图,其实没必要,因为常数过大,在大多数数据下不如暴力
明显应该把操作逆过来,即从 倒推
可以将第一次操作算成加法,然后每次除一下再减一下
除法可以在一开始预处理,即 建边
每个点的答案在第一次访问时就确定了,而且只会在第一次访问时向别的点贡献
此时,其实就是一个区间删除,区间查询剩下的数
就可以并查集维护每个点右边的第一个还没被访问的点,暴力扩展即可
有一点点卡常 加个快读就过了
模拟赛总结
T2赛场做法假了,没对拍
T3没有注意到重要的 的条件
T4注意线段树常数很大,不如暴力, 应该优先考虑 做法
2023.10.24 比赛记录
A. 勇者
瞎搞题
B. K 近查询
链表维护插入排序 注意到每个数最多被比他大的数经过 次,达到 次以后就将这个数删掉
时间复杂度
C. 树上流水
显然贪心选深度小的节点一定更优
所以预处理每个叶子的深度和流量 二分即可 注意极限数据会爆 long long
D. 逆序对
考虑线段树维护一个类似cdq分治的东西,就是每个节点维护把左半边和右半边交换后,经过中点的逆序对贡献
lazy tag存一个数组表示当前区间,当前点下面第 层所有区间都被翻转了
代码还没写 挖个坑
模拟赛总结
警钟长鸣
爆longlong
2023.10.26比赛记录
A. 发射器
MST板子
B. 树上删边
考虑删边时,贪心先选择最大的点周围的所有边
并查集维护最大值,把操作倒过来就行
C. 欧几里得
人类智慧题
找最小的 使得
答案为
这样可以保证gcd满足条件
D. 没有上司的涨薪舞会
表示 在/不在时从根到 的期望贡献
模拟赛总结
补数学去
2023.10.27比赛记录
A. 小X的质数
线性筛每个数的最小素数因子 直接判断 前缀和维护答案即可
B. 完美主义
Dijkstra
爆搜
C. 挑战哈密顿
通过 spj
得到答案一定为
考虑当前已经有一条满足条件的链,怎么将一个点加进去
考虑最后一个第一个颜色的位置为
如果当前点连接 的为第一种颜色,则将这个点插入到 前面,否则插入到 后面,链表维护即可
D. 装备
** **
所以贪心的把大的放在前面即可,做一个类似二分图匹配的东西,每次检查是否可以把较大的 swap
上来
模拟赛总结
好好读题 注意数据范围!
2023.10.28 比赛记录
A. 红球和蓝球
B. 狂亂の木曜日
考虑对区间(m)分块
可以差分预处理出每一个数在一个块内被覆盖了多少次,这样可以在块内 的计算贡献
可以用一个树状数组维护每个位置修改了多少,用于暴力部分计算
总时间复杂度
也可以再对这个前缀和做分块做到 算一个的贡献,这样可以优化到
C. 一九八四
定期重构
直接 bfs
重构即可
D. 旅行
考虑 的 subtask
发现可以预处理 为所有值时的倍增数组,表示从 出发跑 天后的位置
发现当 时,操作天数很少,直接暴力
2023.10.30 比赛记录
A. 彩灯
原序列可以分为多个尽可能长的几个满足条件的串,答案为连续3个这样的串的长度和的最大值
B. 药品试验
由题目给出的式子
考虑用 表示所有的
答案为
C. 小猫钓鱼
直接模拟即可
map是log的!!!!
D. 模拟旅行
正反做两次 dijkstra
就行
模拟赛总结
距离 AK
的编辑距离不超过
对拍多拍一拍啊啊啊啊啊
map是log的,用unordered_map啊啊啊啊啊
2023.10.31 比赛记录
A. 蛋糕
枚举环断开的位置 两次二分
B. Chefina 与区间
按左端点排序,用优先队列维护前面的区间的右端点,每次把小于当前左端点的弹出,剩下的就是与当前区间重合的区间个数,即从当前区间分开要删除的区间个数
对所有的取 即可
C. 小 G 的布料
对于每个点维护一个 表示从 最多向上多少个
然后维护一个 表示假设有 个高为 的列,此时矩形高度为 , 有多少个合法矩形
枚举一行作为最下面一行,单调队列维护每个点的上升空间,保留比当前低的,弹出的时候计算贡献
具体的,我们对上面的 做前缀和,然后当前这个区间的贡献就可以表示为 上两个点的差
D. Easy Data Structure
建表达式树,树剖,线段树上维护一个 pair
表示每个点取 的概率
2023.11.02 比赛记录
A. 构造题
对着大样例找规律即可,耐心实现
B. UTF-8
思路显然, 表示以 为结尾,转移可以再做数位 算方案数
C. 括号串
矩阵好题
考虑一下矩阵
转移矩阵如下
op1
op2
空操作
扔线段树上就行
2023.11.03 比赛记录
A. 点分治
观察样例的图,发现 的 为
所以枚举向上的距离算个组合数就行
B. 卷王 tzc 和 tree
把所有度为 的点合起来,从每个叶子暴力向上,每个点记录一下每个乘积的个数,对于每个查询暴力即可
C. 塔
第二个操作一定不会在高度大于 的地方用,一定不优
考虑 dp[i][j]
表示第 列,最下面 行被操作 覆盖的最小代价
D. 军队
扫描线 挖坑待补
2023.11.04 比赛记录
A. 另一个最长上升子序列
后加入的数显然是不会影响前面的
所以只需要在最终的数列上做 即可
可以二分每个数在最终数列上的位置,用树状数组维护前面的加入个数
B. 连通集合
异或哈希+分块
考虑对于操作分块 用异或哈希维护一段区间内的更改对每个点的影响
C. 区间密度
二分答案 用线段树维护区间 即可 每个 的贡献是 贡献当前 , 贡献
查询整个区间的 是否大于等于 即可
D. 表达式
对 分解质因数,用线段树维护答案对每个因子的余数,crt做答案即可
2023.11.06
A. 取整
二分即可
B. 缩略
绝妙的题啊
考虑 发现每次操作不会影响最终的串的值 的值,而且每个余数不为 的串(除了 xy
和 yx
) 都可以缩成一个字母
然后 dp[i]
表示到 的方案数,可以从前面最近的余数不与当前相同的转移
C. 最小生成树
把 先拿掉,对其他的点做 , 考虑每次连上一个边,连边的贡献为 连上的边的权值-环上的最长边 ,环上最长边可以在并查集中维护
D. 树套树
挖坑待补
2023.11.07
A. 区间
对于每个区间,先检查能不能匹配,能匹配直接匹配,否则检查能不能优化前面一个的右端点
B. 排序
考虑先对原序列随机操作几次,然后每次可以用 的做法暴力,多做几次
的做法为
每次操作 或者 ,按照 做操作 否则后者
C. 分组
贪心发现每次应该选择合法的最小的人,用一个单调栈+主席树就可以
D. 路过中丹
当出现 或者当前区间可以用偶回文串完全覆盖时就合法
前者用前缀和维护,后者用 manacher
+ 树状数组 维护
细节挖坑待补
2023.11.09
A. 谜域的界外
最后答案一定是连续的一段点,可以枚举起点,左端点和右端点,暴力
B. 乘船旅行
对每个人的两个选择建边,最后一定是基环内向树,否则不可能
考虑每棵基环内向树都有两种可能,都暴力计算出来
用bitset维护暴力的dp转移即可
C. 失落的世界
二分 考虑初始值为 时运算次数较少 如果不合法就从 重新跑 最坏情况为 时跑了 次 可以通过
D. 最短路
挖坑待补
2023.11.10
A. 你还没有卸载吗
数论分块 注意边界问题
对拍要注意数据强度
B. 现代豪宅
Dijkstra
板子题
C. 仪式感
有个结论,min
不会超过 ,也就是质因子个数
考虑 表示 gcd
为 时的方案数
其中 表示因子 出现次数, 为当前枚举的 min
, 倒序转移
注意取余数可能正好等于 建议双模数
D. Warrior
挖坑待补
本文作者:xiaruize's Blog
本文链接:https://www.cnblogs.com/xiaruize/p/17782596.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步