昨天对着代码看了一晚上

然后今天终于在loj上过了

数列分块入门9题撒花★,°:.☆( ̄▽ ̄)/$:.°★

然后相当玄学

块的大小调成\(\sqrt{n}\)会TLE,改成150就过了



然后就是用map离散化之后的值不能直接比较大小

锅锅锅

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
int belong[100100],f[1000][1000],sz,blocknum,n,val[100100],id=0,cnt[100100],a[100100];
vector<int> Vec[100100];
map<int,int> To;
void calbe(int n){
for(int i=1;i<=n;i++)
belong[i]=(i-1)/sz+1;
}
void pre(int x){
memset(cnt,0,sizeof(cnt));
int ans=0,ansto=0;
for(int i=(x-1)*sz+1;i<=n;i++){
cnt[a[i]]++;
if(cnt[a[i]]>ansto||(val[a[i]]<=val[ans]&&cnt[a[i]]>=ansto))
ans=a[i],ansto=cnt[a[i]];
f[x][belong[i]]=ans;
}
}
int query(int l,int r,int c){
return upper_bound(Vec[c].begin(),Vec[c].end(),r)-lower_bound(Vec[c].begin(),Vec[c].end(),l);
}
int query(int l,int r){
int lsx=belong[l];
int rex=belong[r];
int ans=0,ansto=0,mid;
for(int i=l;i<=min(lsx*sz,r);i++)
if((mid=query(l,r,a[i]))>ansto||(val[a[i]]<=val[ans]&&mid>=ansto))
ans=a[i],ansto=mid;
if(lsx!=rex){
for(int i=(rex-1)*sz+1;i<=r;i++)
if((mid=query(l,r,a[i]))>ansto||(val[a[i]]<=val[ans]&&mid>=ansto))
ans=a[i],ansto=mid;
if(lsx+1<=rex-1)
if((mid=query(l,r,f[lsx+1][rex-1]))>ansto||(val[f[lsx+1][rex-1]]<=val[ans]&&mid>=ansto))
ans=f[lsx+1][rex-1],ansto=mid;
}
return ans;
}
int main(){
// freopen("1.in","r",stdin);
// freopen("test.out","w",stdout);
scanf("%d",&n);
sz=150;
blocknum=n/sz;
if(n%sz)
blocknum++;
calbe(n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(!To[a[i]]){
To[a[i]]=++id;
val[id]=a[i];
}
a[i]=To[a[i]];
Vec[a[i]].push_back(i);
}
for(int i=1;i<=blocknum;i++)
pre(i);
for(int i=1;i<=n;i++){
int l,r;
scanf("%d %d",&l,&r);
printf("%d\n",val[query(l,r)]);
}
return 0;
}

最新文章

  1. form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
  2. JavaWeb学习笔记——开发动态WEB资源(三)显示当前时间
  3. webpack 前端构建
  4. 类调用类的protected或private的成员函数或成员变量
  5. java07课堂作业
  6. 『TCP/IP详解——卷一:协议』读书笔记——09
  7. 《SELinux安全上下文的管理(含图)》RedHat6.3——步骤详细、条理清晰
  8. java基础学习总结六(对象与类、类的属性与方法)
  9. 为什么java不支持多重继承?
  10. Hadoop基础
  11. js中checkbox反选
  12. 分布式环境中三种Session管理方法的使用场景及优缺点
  13. 检测应用的内存泄漏情况(shell)
  14. #多个关联的python程序在linux后台运行
  15. 鼠标拖拽定位和DOM各种尺寸详解
  16. python之路7-正则表达式
  17. Linux笔记 #10# 用于支持Web应用开发&amp;部署&amp;配置的一些自定义脚本
  18. Spring Boot(一)
  19. HDU6280 From Tree to Graph
  20. Docker镜像原理

热门文章

  1. STL容器之vector
  2. SLAM学习笔记
  3. base_review
  4. Locust 设置响应断言
  5. Hive 数仓中常见的日期转换操作
  6. flask模板应用-javaScript和CSS中jinja2
  7. HDU 1232 畅通工程 (并查集)
  8. oracle 如何将一个字段内容拆分多行显示
  9. Com类型
  10. ZYNQ跑系统 系列(二) petalinux方式移植linux petalinux-config遇到问题