标签:平均数处理 查单点上的区间操作
期望得分:40+40+40
实际得分:40+40+40
打了三个暴力
A. 平均数
查询第k小的连续子序列平均值。
二分,很妙
二分平均值x,所有数减去x,做前缀和,平均值比x小的区间[l,r]有$sum_r-sum_{l-1} < 0$,sum的逆序对数即是x在所有区间里的排名。
由于实数域,归并排序比较方便。
注意到平均值有相同的,即x增大一点,逆序对数可能增加很多,卡不到k-1,不能判等,找到逆序对数<k的最大x就是答案。
B. 涂色游戏
类似长寿花的思想,这种题还是不会做啊。
先dp出子问题的答案(一列或一层之类),然后用组合数+dp拓展到整体(面,立体)
不用记录具体的颜色集合,相同颜色数的所有颜色集合答案相同,按颜色数dp
相邻两列有限制(集合不能相同,集合的并>q),用相邻两个集合的并或交来分类
转移式子可以矩阵快速幂,log掉m。
C. 序列
40%:把区间查询下发到每个点,做前缀和,暴力求出第一次答案,之后每次考虑单点的修改之于所有查询的增量。
瓶颈在于求初始答案和下发操作。
100%:可以不把查询拍到每个点上,考虑线段树,拍到区间节点上,知一个查询最多会放到2logn个节点上,空间复杂度O(2mlogn)。
之后单点查询累计路径上的查询答案即可。