BZOJ4241:历史研究(回滚莫队)
Description
Input
Output
Sample Input
9 8 7 8 9
1 2
3 4
4 4
1 4
2 4
Sample Output
8
8
16
16
HINT
Solution
学回滚莫队的契机是昨晚上$gay$哥在$Loj$群里问区间莫队的做法,
然后一位大爷提到回滚莫队这种东西,我感觉挺有意思的就学了一下……
看完就成回滚莫队板子题了QwQ
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define N (100009)
#define LL long long
using namespace std; struct Que{int l,r,num; LL ans;}Q[N];
int n,m,unit,pos=;
int a[N],b[N],v[N],ID[N],Keg[N];
LL ans; bool cmp1(Que x,Que y) {return ID[x.l]==ID[y.l]?x.r<y.r:ID[x.l]<ID[y.l];}
bool cmp2(Que x,Que y) {return x.num<y.num;} LL Calc(int l,int r)
{
LL ans=;
for (int i=l; i<=r; ++i) Keg[b[i]]=;
for (int i=l; i<=r; ++i)
Keg[b[i]]++, ans=max(ans,(LL)Keg[b[i]]*a[i]);
for (int i=l; i<=r; ++i) Keg[b[i]]=;
return ans;
} void Update(int x)
{
Keg[b[x]]++;
ans=max(ans,(LL)Keg[b[x]]*a[x]);
} void MoQueue(int num)
{
ans=;
for (int i=; i<=n; ++i) Keg[i]=;
int L=min(unit*num,n);
int l=L+,r=L;
while (ID[Q[pos].l]==num)
{
if (ID[Q[pos].l]==ID[Q[pos].r])
{
Q[pos].ans=Calc(Q[pos].l,Q[pos].r);
++pos; continue;
}
while (r<Q[pos].r) Update(++r);
LL tmp=ans;
while (l>Q[pos].l) Update(--l);
Q[pos].ans=ans; ans=tmp;
while (l<L+) Keg[b[l]]--, l++;
++pos;
}
} int main()
{
scanf("%d%d",&n,&m);
unit=sqrt(n);
for (int i=; i<=n; ++i)
scanf("%d",&a[i]), v[i]=a[i];
sort(v+,v+n+);
int num=unique(v+,v+n+)-v-;
for (int i=; i<=n; ++i)
b[i]=lower_bound(v+,v+num+,a[i])-v; for (int i=; i<=m; ++i)
scanf("%d%d",&Q[i].l,&Q[i].r), Q[i].num=i; int cnt=n/unit+(n%unit!=);
for (int i=; i<=n; ++i)
ID[i]=(i-)/unit+; sort(Q+,Q+m+,cmp1);
for (int i=; i<=cnt; ++i)
MoQueue(i);
sort(Q+,Q+m+,cmp2);
for (int i=; i<=m; ++i)
printf("%lld\n",Q[i].ans);
}
BZOJ4241:历史研究(回滚莫队)的更多相关文章
- 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(话说这个名字是不是莫队本 ...
- 2018.08.14 bzoj4241: 历史研究(回滚莫队)
传送们 简单的回滚莫队,调了半天发现排序的时候把m达成了n... 代码: #include<bits/stdc++.h> #define N 100005 #define ll long ...
随机推荐
- __block和__weak修饰符的区别
block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block修饰的obj置为nil __weak可以避免循环引用,但是其会导致外部对象释放了之后, ...
- SSM(Spring+SpringMVC+Mybstis)搭建,写给新手
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis) 作用: SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为 ...
- hdu 4090
GemAnd Prince Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- FUzhou 1607 Greedy division---因子个数问题。
Problem 1607 Greedy division http://acm.fzu.edu.cn/problem.php?pid=1607 Accept: 402 Submit: 1463T ...
- 设计模式学习——代理模式(Proxy Pattern)
放假啦~学生们要买车票回家了,有汽车票.火车票,等.但是,车站很远,又要考试,怎么办呢?找代理买啊,虽然要多花点钱,但是,说不定在搞活动,有折扣呢~ /// /// @file Selling_Tic ...
- sum() 求和用法
def func(*args): # sum = 0 # for el in args: # sum += el # return sum return sum(args) # sum() 求和 de ...
- 理解CSS3 transform中的Matrix(矩阵)——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...
- Docker for Windows(二)登录与配置镜像加速器
一.启动Docker for Windows 通过桌面Docker Desktop启动,右下角出现的白色鲸鱼图标保持稳定时,表示Docker正在正常运行,将鼠标移到图标上会显示"Docker ...
- ul制作导航菜单
首先上图,最终效果: HTML代码: <!DOCTYPE html><html> <head> <meta charset="utf-8" ...
- MYSQL 外键 on语句 多表查询
外键约束 创建外键 --- 每一个班主任会对应多个学生 , 而每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY KE ...