武汉集训
Day1
没什么感觉便到了武汉,这里似乎和成都也没什么不同,下榻的酒店周围非常奇妙,明明是城乡结合部却异常繁华。
开摆!
Day2
记忆文件缺失.jpg
Day3
昨天晚上睡得比较晚,今天好想睡觉。。。
三道阴间分块/数据结构题,全部写暴力可以得到199的高分。
T1:
给定长度为 的序列,每次给定 ,查询 的二进制表示中 的个数是多少。
首先可以知道一个数最多对它之后的位造成贡献,于是可以对序列离散化。
然后考虑回滚莫队怎么做。
显然对于每一群左端点在同一块的询问,右端点每次移动只贡献一次,然而左端点的贡献不好算,考虑优化左端点的贡献。
根据左端点的位置将值域分成 块,每一块内维护一个int存最开始的log位和接下来连续的1最多到哪里。各种复杂度均摊下来之后是每个块向下一个块只进位一次。
T2:
单点修改,查区间内长度不超过 (给定的数)的最大子段和。
按照c分块,块内部是一个单点修改求最大子段和,线段树维护。
再在所有的块上套一棵线段树维护答案。
对于区间间的答案,将右边的前缀max和左边的后缀max对齐后发现要求的是对应位置的和的最大值,同时要支持两者的区间加,线段树维护。
T3:
给定a数组和排列b,每次询问给出l,r,询问所有中所有i在a中形成的连通块内部各自的小z的袜子的和。
第一种做法:考虑先将所有的按照数从小到大排序,相同的数构成一段连续的序列,序列内部再按在原序列中的下标排序。此时相邻的两个数相同的数造成贡献仅当原下标对应y的区间最大和最小值都被选了。
再对处理后的序列分块,块内设有个数,则可以预处理出种选l,r对应的答案和前后缀最大连续段。直接拿询问上去跑。
直接开数组开不下,可以只维护相邻的两个块,算对每一个答案的贡献。
第二种做法:对颜色根号分治,颜色个数大于时跑莫队,小于二维数点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】