2018.08.14 bzoj4241: 历史研究(回滚莫队)
传送们
简单的回滚莫队,调了半天发现排序的时候把m达成了n。。。
代码:
#include<bits/stdc++.h>
#define N 100005
#define ll long long
using namespace std;
ll cnt[N],tot[N],val[N],ans[N],rk[N],mp[N],tmp;
int n,m,blo[N],block,num,pos=1,siz;
struct Q{int l,r,id;}q[N];
inline ll read(){
ll ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
inline void write(ll x){
if(x>9)write(x/10);
putchar((x%10)^48);
}
inline ll max(ll a,ll b){return a>b?a:b;}
inline bool cmp(Q a,Q b){return blo[a.l]==blo[b.l]?a.r<b.r:blo[a.l]<blo[b.l];}
inline void update(int x){++cnt[rk[x]],tmp=max(tmp,cnt[rk[x]]*val[x]);}
inline void reupdate(int x){--cnt[rk[x]];}
inline ll query(int ql,int qr){
ll ret=0;
for(int i=ql;i<=qr;++i)tot[rk[i]]=0;
for(int i=ql;i<=qr;++i)++tot[rk[i]],ret=max(ret,tot[rk[i]]*val[i]);
return ret;
}
inline int solve(int i,int blos){
tmp=0;
for(int j=1;j<=n;++j)cnt[j]=0;
int L=min(blos*block,n),ql=L+1,qr=L;
for(;blo[q[i].l]==blos;++i){
if(blo[q[i].l]==blo[q[i].r]){ans[q[i].id]=query(q[i].l,q[i].r);continue;}
while(qr<q[i].r)update(++qr);
ll remov=tmp;
while(ql>q[i].l)update(--ql);
ans[q[i].id]=tmp,tmp=remov;
while(ql<L+1)reupdate(ql++);
}
return i;
}
int main(){
n=read(),m=read(),block=sqrt(n);
for(int i=1;i<=n;++i)mp[i]=val[i]=read(),blo[i]=(i-1)/block+1;
sort(mp+1,mp+n+1),siz=unique(mp+1,mp+n+1)-mp-1;
for(int i=1;i<=n;++i)rk[i]=lower_bound(mp+1,mp+siz+1,val[i])-mp;
for(int i=1;i<=m;++i)q[i].l=read(),q[i].r=read(),q[i].id=i;
sort(q+1,q+m+1,cmp);
for(int i=1;i<=blo[n];++i)pos=solve(pos,i);
for(int i=1;i<=m;++i)write(ans[i]),puts("");
return 0;
}
2018.08.14 bzoj4241: 历史研究(回滚莫队)的更多相关文章
- BZOJ4241:历史研究(回滚莫队)
Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...
- BZOJ4241历史研究——回滚莫队
题目描述 IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. 日记中记录了连 ...
- bzoj4241/AT1219 历史研究(回滚莫队)
bzoj4241/AT1219 历史研究(回滚莫队) bzoj它爆炸了. luogu 题解时间 我怎么又在做水题. 就是区间带乘数权众数. 经典回滚莫队,一般对于延长区间简单而缩短区间难的莫队题可以考 ...
- BZOJ.4241.历史研究(回滚莫队 分块)
题目链接 \(Description\) 长度为n的数列,m次询问,每次询问一段区间最大的 \(A_i*tm_i\) (重要度*出现次数) \(Solution\) 好像可以用莫队做,但是取max的操 ...
- 「JOISC 2014 Day1」历史研究 --- 回滚莫队
题目又臭又长,但其实题意很简单. 给出一个长度为\(N\)的序列与\(Q\)个询问,每个询问都对应原序列中的一个区间.对于每个查询的区间,设数\(X_{i}\)在此区间出现的次数为\(Sum_{X_{ ...
- 【题解】BZOJ4241: 历史研究(魔改莫队)
[题解]BZOJ4241: 历史研究(魔改莫队) 真的是好题啊 题意 给你一个序列和很多组询问(可以离线),问你这个区间中\(\max\){元素出现个数\(\times\)元素权值} IOI国历史研究 ...
- AT1219 歴史の研究 回滚莫队
可在vj上提交:https://vjudge.net/problem/AtCoder-joisc2014_c 题意: IOI 国历史研究的第一人--JOI 教授,最近获得了一份被认为是古代 IOI 国 ...
- AT1219 歴史の研究[回滚莫队学习笔记]
回滚莫队例题. 这题的意思大概是 设 \(cnt_i\) 为 l ~ r 这个区间 \(i\) 出现的次数 求\(m\) 次询问 求 l~r 的 max {\(a_i\) * \(cnt_i\)} \ ...
- 【BZOJ4241】历史研究(回滚莫队)
题目: BZOJ4241 分析: 本校某些julao乱膜的时候发明了个"回滚邹队",大概意思就是某个姓邹的太菜了进不了省队回滚去文化课 回滚莫队裸题qwq(话说这个名字是不是莫队本 ...
随机推荐
- mysql 集群 数据同步
mysql集群配置在网站负载均衡中是必不可少的: 首先说下我个人准备的负载均衡方式: 1.通过nginx方向代理来将服务器压力分散到各个服务器上: 2.每个服务器中代码逻辑一样: 3.通过使用redi ...
- 使用AngularJS处理单选框和复选框的简单方法
在复选框中,可以绑定ng-model给false或者true值,即可选中或清除选中状态 如下图 而在单选框里就相对复杂一点,单选框要选中一个,就要给相同的name属性,然后绑定相同的ng-model, ...
- WebService 服务端客户端 实例 HTTPRIO (一) SOAP WSDL
Delphi中WebService包含的组件解释(有7个) (1) THTTPRIO-------:使用Http消息来调用远程使用SOAP的接口对象 (2) THTTPReqResp- ...
- Java 9 模块化(Modularity)
JDK9的发布一直在推迟,终于在2017年9月21日发布了.下面是JDK9的几个下载地址: JDK9.0.1 Windows-x64下载地址 Oracle Java 官网下载地址 OpenJDK 9官 ...
- 浅谈DNS域名解析
定义:浏览器通过域名查询URL对应的IP 存储方式:1.浏览器缓存 2.操作系统缓存 3.路由器缓存 4.ISP(Internet Server Provider) 的DNS服务器 5.根服务器 Ti ...
- Spring MVC 视图及视图解析器
org.springframework.web.servlet.view.InternalResoureceViewResolve 把逻辑视图改为物理视图 可混用多种视图 不进过Handler直接进入 ...
- ABAP-关于COMMIT WORK 和COMMIT WORK AND WAIT
转载:https://blog.csdn.net/champaignwolf/article/details/6925019 首先说明一点:更新是异步的,更新是由SAP中UPD1和UPD2两个进程执行 ...
- c++ vector, 迭代器
现代c++尽量使用vector(容器)和迭代器(相当于指针),少使用数组和指针,除非对程序执行效率有很高的要求. 容器优点,易于扩展,可通过push_back方法动态添加元素,数组不能动态添加元素. ...
- Python Spider 抓取猫眼电影TOP100
""" 抓取猫眼电影TOP100 """ import re import time import requests from bs4 im ...
- Delphi 创建一个url网址快捷方式代码
procedure CreateURLShortcut(const ShortcutFile, URL: string); var F: TextFile; // text file begin {$ ...