20241024 模拟赛(长方体,三角形,区间,图)

看题戳这里

总结

1h 看题+骂出题人
1h 把之前没做完的题单补了
1h 闲逛+水群+听歌
1h 疯狂rush暴力!!!

结果看完solution才发现我是fw \(qwq\)
最终分数:30+60+60+10

解析

A. 长方体

难度:绿
暴力:直接三维差分+前缀和搞定。
正解:先算出前缀交与后缀交。被 \(n\) 个长方体覆盖的点就是所有长方体的交。
而只被 \(n-1\) 个长方体覆盖的点怎么算呢,假设其没被第 \(i\) 个长方体覆盖,则答案为前 \(i-1\) 个长方体的交和后 \(n-i\) 个长方体的交再求交,最后减去被 \(n\) 个长方体覆盖的部分,就行了。
时间复杂度 \(O(n)\)

B. 三角形

难度:绿
注意力好题。
我们发现若使某个区间找不出符合条件的三元组,则其边长会呈指数级增长。
但题目中有 \(a_i\leq 10^{18}\),所以当区间长度 \(\geq100\) 时绝对有符合条件的三元组。
\(\leq100\) 的部分直接暴力就行了。

C. 区间

难度:绿-蓝
区间翻转?一开始想到了用链表解决。
但是这里要求出第 \(k\) 位,时间复杂度会炸。
发现两个特殊性质:长度一定,以及 \(l\) 单调不减。
于是可以维护一个双端队列,从左往右更新。

D. 图

难度:绿
发现这玩意就是一个求最大生成树,点权怎么处理呢,我们先搞一个超级点连向所有的点,边权为 \(1\)
然后对于能连的每一条边,边权设为 \(val_i+val_j\),然后 \(ans\) 减去每个点的点权就行了。
一种巧妙的建图方式。

posted @   nagato__yuki  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示