博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOJ6285 数列分块入门9(分块)
阅读量:6250 次
发布时间:2019-06-22

本文共 1759 字,大约阅读时间需要 5 分钟。

昨天对着代码看了一晚上

然后今天终于在loj上过了
数列分块入门9题撒花★,°:.☆( ̄▽ ̄)/$:.°★

然后相当玄学

块的大小调成\(\sqrt{n}\)会TLE,改成150就过了
然后就是用map离散化之后的值不能直接比较大小
锅锅锅

#include 
#include
#include
#include
#include
#include
using namespace std;int belong[100100],f[1000][1000],sz,blocknum,n,val[100100],id=0,cnt[100100],a[100100];vector
Vec[100100];map
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; }

转载于:https://www.cnblogs.com/dreagonm/p/10048516.html

你可能感兴趣的文章
Windows下使用GTK接口gdk_pixbuf_new_from_file加载图片失败
查看>>
记录一个MySQL的复杂的更新SQL
查看>>
kmp算法实现
查看>>
vs2012 输出窗口报错 “无法查找或打开 PDB 文件”
查看>>
关于卷一中DR/BDR选举过程解释
查看>>
三分技术,七分管理
查看>>
考题:为什么 Shell 脚本自动把字符串 10001 当成二进制,输出 17?
查看>>
Java的finally语句不会被执行的唯一情况
查看>>
UITableView 基本使用[二] 基本属性
查看>>
mysqldump 常用参数
查看>>
理解tomcat之搭建简易http服务器
查看>>
Storm Spark Scala 混合代码快速编译打包jar方式,然后java风格使用(朋友咨询)
查看>>
设置Static 文本字体方法
查看>>
Java并发之AQS详解
查看>>
TI OMAP MUX configure
查看>>
Intellij IDEA神器常用技巧八-2018版本新增快捷键
查看>>
做销售,必须“封杀”的七种心理
查看>>
Uber基于RNN的极端事件预测,解决交通问题
查看>>
elasticsearch5.3安装插件head
查看>>
java代码优化-2(你真的会用这些吗)
查看>>