[TC14088]LimitedMemorySeries1

题目大意:

给定长度为\(n(n\le5\times10^6)\)的数组\(X\),询问不超过\(q(q\le100)\)次,每次询问第\(k_i\)大的数是多少。

数组\(X\)生成方式如下:

  1. X[0] = x0
  2. for i = 1 to n-1:
  3. X[i] = (X[i-1] * a + b) % (10^9+7)

内存大小1MB,时间1S。

思路:

内存这么紧肯定不能开一个长度为\(n\)的数组,因此按照值域分块。先对每一个块开桶,统计每一块有多少数,确定答案在哪一块中。然后对于块中的每一个数统计个数。

时间复杂度\(\mathcal O(nq)\)。

源代码:

  1. #include<vector>
  2. #include<cstring>
  3. class LimitedMemorySeries1 {
  4. private:
  5. using int64=long long;
  6. static constexpr int B=31623,mod=1e9+7;
  7. int cnt[B];
  8. public:
  9. int64 getSum(const int &n,const int &x0,const int &a,const int &b,std::vector<int> query) {
  10. int64 ans=0;
  11. for(auto k:query) {
  12. memset(cnt,0,sizeof cnt);
  13. for(register int i=0,x=x0;i<n;i++) {
  14. cnt[x/B]++;
  15. x=((int64)x*a%mod+b)%mod;
  16. }
  17. int p=0,q=0;
  18. for(;p<B;p++) {
  19. if(k-cnt[p]<=-1) break;
  20. k-=cnt[p];
  21. }
  22. memset(cnt,0,sizeof cnt);
  23. for(register int i=0,x=x0;i<n;i++) {
  24. if(x/B==p) cnt[x%B]++;
  25. x=((int64)x*a%mod+b)%mod;
  26. }
  27. for(;q<B;q++) {
  28. if(k-cnt[q]<=-1) break;
  29. k-=cnt[q];
  30. }
  31. ans+=(int64)p*B+q;
  32. }
  33. return ans;
  34. }
  35. };

[TC14088]LimitedMemorySeries1的更多相关文章

  1. TopCoder SRM 675 Div1 Problem 500 LimitedMemorySeries1(分块)

    题意  给定一个长度不超过$5*10^{6}$的数列和不超过$100$个询问,每次询问这个数列第$k$小的数,返回所有询问的和 内存限制很小,小到不能存下这个数列.(数列以种子的形式给出) 时限$10 ...

  2. NodeJs和ReactJs单元测试工具——Jest

    Jest——Painless JavaScript UnitTesting 特点 适应性强 默认使用Jasmine断言 模块化的 可扩展的 可配置的 沙箱式且快速 虚拟化JS环境,模拟浏览器 并行运行 ...

随机推荐

  1. PDF截取矢量图

    PDF截取矢量图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 方法与步骤 下载并安装 Adobe Acrobat X Pro 软件 点击右侧按钮(工具)-页面-裁剪-单击并选择区域-双击实 ...

  2. RESTful记录-RESTful介绍

    RESTful Web服务是基于REST架构的Web服务.在REST架构一切都是一种资源. RESTful Web服务是轻量级的,高度可扩展性和可维护性,并且非常常用于创建基于API的Web应用程序. ...

  3. [整理]IE11中的WebGL探秘:渲染速度超Chrome

    http://www.csdn.net/article/2013-12-19/2817854-IE11-WebGL-and-more 摘要:IE11开始支持WebGL,并且效果非常好,IE11的Web ...

  4. CSS-3 圆角Border-radius 的使用

    那么早些年 圆角其实是有的,后来的草案中将它去掉了,现在从CSS3开始,又加入了回来.可以看出圆角的使用还是非常广泛的. 那么在圆角还没有被加入进来之前,我们要实现圆角的效果,可能就是需要IMG图片来 ...

  5. github for Mac 教程

    Mac系统自带git,所有我们使用Mac搬的github客户端,无需安装git,所以使用github for Mac 超级简单,下载安装就好了. 1github for Mac 下载地址:https: ...

  6. bug处理

    当提示405 method not allowed 时候,路由可能有问题,看看路由是get/post 是否合格

  7. 【ORACLE】oracl基本操作笔记

    1.用命令导入导出表 C:\Users\xiang>imp bjlims/bjlims@orcl file="c:\tjlims.dmp" full=y C:\Users\x ...

  8. E1. Array and Segments (Easy version)(暴力) && E2. Array and Segments (Hard version)(线段树维护)

    题目链接: E1:http://codeforces.com/contest/1108/problem/E1 E2:http://codeforces.com/contest/1108/problem ...

  9. spring-boot-mybatis-多数据源

    sql 语句 DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT ...

  10. Linux内核启动流程分析(一)【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...