【题解】P5397 [Ynoi2018] 天降之物

思路

根号分治。

对于每个值,把它们分成出现大于根号次和小于等于根号次两类。

先考虑不带修的问题。

对于大于根号次的值显然至多只有根号个,可以暴力 O(n) 预处理出和它有关的答案。

对于小于等于根号次的值,显然可以暴力归并或者 vector 二分求答案,归并单次的复杂度是根号。

带修的话,分讨一下贡献。

  1. 两个根号次以内的值,合并后还是根号次以内

直接归并。

  1. 两个大于根号次的值

因为至多只会有根号次这样的合并,所以可以暴力。

  1. 一个根号次以内的值和一个大于根号次的值

这个比较麻烦,要拆一下贡献。

可以把这个小于根号次的值暂时先归并到另一个值内,然后询问时和预处理出的答案一起算贡献。

归并累积到大于根号次时只能暴力重构,但是因为至多有根号次,所以复杂度也是对的。

注意可能会有合并未出现的值一类的边界情况,所以还要套路地维护每个值真实情况下代表的值。

时间复杂度 O(nn)

代码

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