[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的更多相关文章

  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. Ubuntu下安装BeautifulSoup4

    先去下载beautifulsoup的安装包https://www.crummy.com/software/BeautifulSoup/bs4/download/4.0/ 下载完之后解压 tar -xv ...

  2. <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible' />

    代码一:<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> http-eq ...

  3. Java 在匿名内部函数中为外部函数变量赋值的解决方案

    Java匿名内部函数本人不怎么主动使用,但是经常会调用一些API,其中会调用一些接口,而这些接口是需要使用匿名内部类来实现的,于是就遇到了一些问题. 就比如okHttp3 的接口调用 OkHttpCl ...

  4. ZCMU 1894: Power Eggs

    http://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1894 题意: 有M个鹰蛋,N层楼,鹰蛋的硬度是E,也就是说在1~E层楼扔下去不会碎,E+1层楼扔 ...

  5. spring中bean配置和注入场景分析

    bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...

  6. 关于aspx.designer.cs

    .aspx文件..aspx.cs文件和.aspx.designer.cs的一些说明 .aspx文件:(页面)书写页面代码.存储的是页面design代码.只是放各个控件的代码,处理代码一般放在.cs文件 ...

  7. 20155225 2016-2017-2 《Java程序设计》第八周学习总结

    20155225 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 通用API 日志API 国际化基础 规则表达式 JDK8增强功能 教材学习中的问题和解决过程 ...

  8. xmlhttprequest upload

    html5 带进度上传 function fileSelected() { var file = document.getElementById('fileToUpload').files[0]; i ...

  9. Linux - trap 命令

    trap 命令用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作.当shell接收到sigspec指定的信号时,arg参数(命令)将会被读取,并被执行. trap 信号参 ...

  10. [转]Linux联网问题

    一.Kali联网问题 首先ifconfig,可以看到没有正在工作的网卡,只有localhost 然后ifconfig -a,可以看到eth0这块网卡并没有离家出走,只是罢工了而已 打开/etc/net ...