csp-s模拟测试52

标签:平均数处理 查单点上的区间操作

 

期望得分: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)。

之后单点查询累计路径上的查询答案即可。

 

posted @ 2019-09-27 17:55  hzoi_yzh  阅读(196)  评论(0编辑  收藏  举报