与之前一样,秒刷A和B,然后就永远卡在了C

B也因为少看一句话被Hunt掉了

说说C的做法吧(分块大法好

给定一个序列,每次询问区间l-r,求∑(ai^bi),其中bi是指ai在区间中的出现次数,ai是指有在区间中出现的数。

先把官方的正解贴出来:

然后我用自己的话来说一下。。

分块,首先预处理出h(i,j)和g(a,b),各自的复杂度一个为n^1.5,一个多加上快速幂的logn

h的话你可以求出每个块所含有的数 O(块数*块内元素数=n),然后再前缀和累加起来 O(值域*块数=n^1.5)

g的话直接利用正解说的方法暴力求一下 O(块数*块数*块内元素数*计算时间=n^1.5*logn)

对于询问,我们可以将分块完剩余的两端暴力求出各个数的出现次数,然后与中间整块的答案合并 O(块内元素数*计算时间=n^0.5*logn)

对于快速幂所带来的log,我们预处理出所有有可能要计算的幂就行了,用vector存的话空间也不是问题 O(n)

总的复杂度就是O(n^1.5+Q*n^1.5)

最新文章

  1. ActivityManagerService是如何启动app
  2. poj.1988.Cube Stacking(并查集)
  3. Oracle merge
  4. At_speed_test
  5. Xcode5 支持 SVN 1.7
  6. QNX 实时操作系统(Quick Unix)
  7. 为Widget添加事件
  8. android SDK 代理配置(东北大学)
  9. Android应用切换皮肤功能实现
  10. linux线程之pthread_join
  11. 自由的Debian
  12. 【转】windows浏览共享切换用户登录的方法
  13. linux下lampp(xampp)安装memcached扩展
  14. poj1321 棋盘(dfs)
  15. 重拾《 两周自制脚本语言 》- Eclipse插件实现语法高亮
  16. 【学习总结】Git学习-参考廖雪峰老师教程-期末总结
  17. QThread的一些使用心得
  18. 微信公众号开发--.Net Core实现微信消息加解密
  19. Docker 入门(Mac环境)- part 5 stacks
  20. 在win和android上同时进行OpenCV程序设计

热门文章

  1. iOS 实时监测网络状态(通过Reachability)
  2. motto - question - bodyParser.urlencoded 中设置 extended 为 true 和 false 有什么区别吗?
  3. 原生js获取页面中所有checkbox
  4. layer 点击弹出图片
  5. pywinauto 的使用
  6. 分析setup/hold电气特性从D触发器内部结构角度
  7. SpringCloud框架搭建+实际例子+讲解+系列五
  8. 在WebAPI中调用其他WebAPI
  9. [WorldFinal 2012E]Infiltration(dfs+图论)
  10. 笔记-scrapy-Request/Response