传送们

简单的回滚莫队,调了半天发现排序的时候把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: 历史研究(回滚莫队)的更多相关文章

  1. BZOJ4241:历史研究(回滚莫队)

    Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. ...

  2. BZOJ4241历史研究——回滚莫队

    题目描述 IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开始着手调查日记中记载的事件. 日记中记录了连 ...

  3. bzoj4241/AT1219 历史研究(回滚莫队)

    bzoj4241/AT1219 历史研究(回滚莫队) bzoj它爆炸了. luogu 题解时间 我怎么又在做水题. 就是区间带乘数权众数. 经典回滚莫队,一般对于延长区间简单而缩短区间难的莫队题可以考 ...

  4. BZOJ.4241.历史研究(回滚莫队 分块)

    题目链接 \(Description\) 长度为n的数列,m次询问,每次询问一段区间最大的 \(A_i*tm_i\) (重要度*出现次数) \(Solution\) 好像可以用莫队做,但是取max的操 ...

  5. 「JOISC 2014 Day1」历史研究 --- 回滚莫队

    题目又臭又长,但其实题意很简单. 给出一个长度为\(N\)的序列与\(Q\)个询问,每个询问都对应原序列中的一个区间.对于每个查询的区间,设数\(X_{i}\)在此区间出现的次数为\(Sum_{X_{ ...

  6. 【题解】BZOJ4241: 历史研究(魔改莫队)

    [题解]BZOJ4241: 历史研究(魔改莫队) 真的是好题啊 题意 给你一个序列和很多组询问(可以离线),问你这个区间中\(\max\){元素出现个数\(\times\)元素权值} IOI国历史研究 ...

  7. AT1219 歴史の研究 回滚莫队

    可在vj上提交:https://vjudge.net/problem/AtCoder-joisc2014_c 题意: IOI 国历史研究的第一人--JOI 教授,最近获得了一份被认为是古代 IOI 国 ...

  8. AT1219 歴史の研究[回滚莫队学习笔记]

    回滚莫队例题. 这题的意思大概是 设 \(cnt_i\) 为 l ~ r 这个区间 \(i\) 出现的次数 求\(m\) 次询问 求 l~r 的 max {\(a_i\) * \(cnt_i\)} \ ...

  9. 【BZOJ4241】历史研究(回滚莫队)

    题目: BZOJ4241 分析: 本校某些julao乱膜的时候发明了个"回滚邹队",大概意思就是某个姓邹的太菜了进不了省队回滚去文化课 回滚莫队裸题qwq(话说这个名字是不是莫队本 ...

随机推荐

  1. redis详解(三)

    1. 使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...

  2. 如何在idea中导入本地所需要的jar包

    今天遇到一个问题,在idea创建普通java工程时不知道如何导入jar包,上网差了一下,也算是一个整理.

  3. ready 事件 DOM(文档对象模型) 已经加载....

    定义和用法 当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件. 由于该事件在文档就绪后发生,因此把所有其他的 jQuery 事件和函数置于该事件中是非 ...

  4. MySQL 查询时间差值大于某一个值的 记录

    "SELECT table_id, FROM table WHERE (timediff('%s',raise_time)<'00:05:00')" % \( table_i ...

  5. CSS选择器学习小结

    关于CSS选择器的问题,在实际项目中,以及一般的前端面试中会经常遇到.下面对此做一小结,梳理和巩固相关方面知识.(如有不妥之处,还望大家及时批评指正,以免误导他人) 一.选择器种类 1.id选择器(# ...

  6. dmidecode详解

    1.DMI简介 DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行. SMBI ...

  7. Mysql生成索引的方式

    1.选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响.通常来说,可以遵循以下一些指导原则: (1)越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和C ...

  8. %s %r 区别 转

    也可说是 str() 和 repr() 的区别 转自:http://blog.csdn.net/wusuopubupt/article/details/23678291 %r用rper()方法处理对象 ...

  9. 在SQL Server中使用CLR调用.NET方法

    介绍    我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2 ...

  10. New Game! (最短路+建图)

    New Game! https://www.nowcoder.com/acm/contest/201/L 题目描述 Eagle Jump公司正在开发一款新的游戏.Hifumi Takimoto作为其中 ...