LGP3709题解
题目大意
简化后为区间众数出现次数,简化前为【数据删除】
吐槽
为什么题解只有一篇分块,剩下的全是莫队?
这题不是蒲公英?这和算导例题有何区别???
为什么现在的人都喜欢去看题解而不注重思维???
莫队之前也胡过区间众数莫队,由于太菜胡出来了一个回滚莫队。(毕竟暴力思路这题很难删)
题解
因为某些原因代码是从 P5048 搬过来然后把强制在线去掉后加了个负号(
首先我们对序列分块,然后求出左右端点同时也是某个块的左右端点的区间的众数出现次数。(语文差轻喷)
然后对于一个询问,把询问区间分为整块和边角块后,我们很容易能够知道答案一定在 O(整块答案) 级别。所以我们枚举边角块的 \(O(\sqrt n)\) 个数,看它在区间中出现了多少次就行了。
但是数出现次数的方法有点儿妙。
我们开 \(n\) 个 vector 记录每一种数出现的下标。
假如一个边角块的数可能成为答案(设其为 \(k\)),那么这个数后面的第整块答案个 \(k\) 一定也在区间内。
而很容易知道更新答案的复杂度是 \(O(\sqrt n)\) 的。
code:
#include<algorithm>
#include<cstdio>
#include<vector>
#include<cmath>
const int N=805,M=5e5+5;
int n,m,p,ans,siz,len,a[M],t[M],pre[M],cnt[M],lsh[M],ANS[N][N];
int L[N],R[N],pos[M];
bool vis[M];
std::vector<int>id[M];
inline int min(const int&a,const int&b){
return a>b?b:a;
}
inline int Query(int l,int r){
int i,j,q=pos[l],p=pos[r];
if(q+1>=p||q==p){
for(i=l;i<=r;++i){
if(++cnt[a[i]]>ans)ans=cnt[a[i]];
}
for(i=l;i<=r;++i)--cnt[a[i]];
return ans;
}
ans=ANS[q+1][p-1];
for(i=l;i<=R[q];++i){
for(j=pre[i]+ans;j<id[a[i]].size()&&id[a[i]][j]<=r;++j)++ans;
}
for(i=L[p];i<=r;++i){
for(j=pre[i]-ans;j>=0&&id[a[i]][j]>=l;--j)++ans;
}
return ans;
}
signed main(){
register int i,j,k,x=0,ql,qr;
scanf("%d%d",&n,&m);p=ceil(n/sqrt(m));
for(i=1;i<=n;++i){
scanf("%d",a+i);lsh[i]=a[i];
pos[i]=(i-1)/p+1;
}
siz=pos[n];
for(i=1;i<=siz;++i)L[i]=R[i-1]+1,R[i]=i*p;
R[siz]=n;
std::sort(lsh+1,lsh+n+1);len=std::unique(lsh+1,lsh+n+1)-lsh-1;
for(i=1;i<=n;++i){
a[i]=std::lower_bound(lsh+1,lsh+len+1,a[i])-lsh;
id[a[i]].push_back(i);pre[i]=id[a[i]].size()-1;
}
for(i=1;i<=siz;++i){
for(j=i;j<=siz;++j){
for(k=L[j];k<=R[j];++k){
if(++cnt[a[k]]>ans)ans=cnt[a[k]];
}
ANS[i][j]=ans;
}
for(j=L[i];j<=n;++j)--cnt[a[j]];ans=0;
}
for(i=1;i<=m;++i){
scanf("%d%d",&ql,&qr);ans=len=0;
printf("%d\n",-Query(ql,qr));
}
}
LGP3709题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- 深入了解Element Form表单动态验证问题 转载
随风丶逆风 2020-04-03 15:36:41 2208 收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...
- 基于Autolayout的动画
在修改了约束之后,只要执行下面代码,就能做动画效果 [UIView animateWithDuration:1.0 animations:^{ [添加了约束的view的父控件 layoutIfNeed ...
- 数值分析:最小二乘与岭回归(Pytorch实现)
Chapter 4 1. 最小二乘和正规方程 1.1 最小二乘的两种视角 从数值计算视角看最小二乘法 我们在学习数值线性代数时,学习了当方程的解存在时,如何找到\(\textbf{A}\bm{x}=\ ...
- suse 12 利用缓存创建本地源供内网服务使用
文章目录 服务端获取 添加源 刷新源 清除缓存 安装软件 获取rpm包 客户端测试 zypper --help 前言: 其实,咱也不知道为啥写了这篇博客,咱就是想学一学suse,咱也不会,咱也只能学, ...
- 华为eNSP无限井号#解决方法
如下图所示,允许ensp相关应用通过防火墙
- 如何设置IPv4和IPv6报文的DSCP值——网络测试仪实操
一.操作说明 在QoS测试中,经常要设置不同优先级的报文,来验证被测设备对于优先级的调度.所以,我们就要了解如何设置IPv6和IPv6报文中的DSCP(大部分使用DSCP值,也会用到TOS值) 这里我 ...
- OLAP阵营又增一猛将,比肩Power BI不是说说而已!
说到大数据应用最多的技术,不得不提OLAP技术,在国内外,不论传统公司还是互联网公司,都开始利用OLAP技术分析挖掘大数据的价值.也许很多人对OLAP的概念还不是很清楚,简单来说,就把数据处理成数据立 ...
- 华为服务器设置iBMC管理网口IP地址,开启Monitor图文教程
设置iBMC管理网口IP地址 默认用户名:root 默认密码:Huawei12#$ 操作步骤 服务器重启时,当出现如下界面时,重复按"Delete". 在启动过程出现输入密码对话框 ...
- .Net Core之选项模式Options使用
一.简要阐述 ASP.NET Core引入了Options模式,使用类来表示相关的设置组.简单的来说,就是用强类型的类来表达配置项,这带来了很多好处.利用了系统的依赖注入,并且还可以利用配置系统.它使 ...
- 点击弹出div内容包括遮罩层
效果: HTML: <!-- 添加分组按钮 --> <div class="group_add" onclick = "docu ...