[TC14088]LimitedMemorySeries1
[TC14088]LimitedMemorySeries1
题目大意:
给定长度为\(n(n\le5\times10^6)\)的数组\(X\),询问不超过\(q(q\le100)\)次,每次询问第\(k_i\)大的数是多少。
数组\(X\)生成方式如下:
X[0] = x0
for i = 1 to n-1:
X[i] = (X[i-1] * a + b) % (10^9+7)
内存大小1MB,时间1S。
思路:
内存这么紧肯定不能开一个长度为\(n\)的数组,因此按照值域分块。先对每一个块开桶,统计每一块有多少数,确定答案在哪一块中。然后对于块中的每一个数统计个数。
时间复杂度\(\mathcal O(nq)\)。
源代码:
#include<vector>
#include<cstring>
class LimitedMemorySeries1 {
private:
using int64=long long;
static constexpr int B=31623,mod=1e9+7;
int cnt[B];
public:
int64 getSum(const int &n,const int &x0,const int &a,const int &b,std::vector<int> query) {
int64 ans=0;
for(auto k:query) {
memset(cnt,0,sizeof cnt);
for(register int i=0,x=x0;i<n;i++) {
cnt[x/B]++;
x=((int64)x*a%mod+b)%mod;
}
int p=0,q=0;
for(;p<B;p++) {
if(k-cnt[p]<=-1) break;
k-=cnt[p];
}
memset(cnt,0,sizeof cnt);
for(register int i=0,x=x0;i<n;i++) {
if(x/B==p) cnt[x%B]++;
x=((int64)x*a%mod+b)%mod;
}
for(;q<B;q++) {
if(k-cnt[q]<=-1) break;
k-=cnt[q];
}
ans+=(int64)p*B+q;
}
return ans;
}
};
[TC14088]LimitedMemorySeries1的更多相关文章
- TopCoder SRM 675 Div1 Problem 500 LimitedMemorySeries1(分块)
题意 给定一个长度不超过$5*10^{6}$的数列和不超过$100$个询问,每次询问这个数列第$k$小的数,返回所有询问的和 内存限制很小,小到不能存下这个数列.(数列以种子的形式给出) 时限$10 ...
- NodeJs和ReactJs单元测试工具——Jest
Jest——Painless JavaScript UnitTesting 特点 适应性强 默认使用Jasmine断言 模块化的 可扩展的 可配置的 沙箱式且快速 虚拟化JS环境,模拟浏览器 并行运行 ...
随机推荐
- PDF截取矢量图
PDF截取矢量图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 方法与步骤 下载并安装 Adobe Acrobat X Pro 软件 点击右侧按钮(工具)-页面-裁剪-单击并选择区域-双击实 ...
- RESTful记录-RESTful介绍
RESTful Web服务是基于REST架构的Web服务.在REST架构一切都是一种资源. RESTful Web服务是轻量级的,高度可扩展性和可维护性,并且非常常用于创建基于API的Web应用程序. ...
- [整理]IE11中的WebGL探秘:渲染速度超Chrome
http://www.csdn.net/article/2013-12-19/2817854-IE11-WebGL-and-more 摘要:IE11开始支持WebGL,并且效果非常好,IE11的Web ...
- CSS-3 圆角Border-radius 的使用
那么早些年 圆角其实是有的,后来的草案中将它去掉了,现在从CSS3开始,又加入了回来.可以看出圆角的使用还是非常广泛的. 那么在圆角还没有被加入进来之前,我们要实现圆角的效果,可能就是需要IMG图片来 ...
- github for Mac 教程
Mac系统自带git,所有我们使用Mac搬的github客户端,无需安装git,所以使用github for Mac 超级简单,下载安装就好了. 1github for Mac 下载地址:https: ...
- bug处理
当提示405 method not allowed 时候,路由可能有问题,看看路由是get/post 是否合格
- 【ORACLE】oracl基本操作笔记
1.用命令导入导出表 C:\Users\xiang>imp bjlims/bjlims@orcl file="c:\tjlims.dmp" full=y C:\Users\x ...
- 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 ...
- spring-boot-mybatis-多数据源
sql 语句 DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT ...
- Linux内核启动流程分析(一)【转】
转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...