传送们

简单的回滚莫队,调了半天发现排序的时候把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. c++builder XE6 线程 tthread

    thread TThread class TSleepFunc : public TCppInterfacedObject<TProc> { public: TSleepFunc(TFor ...

  2. 使用eclipse从github导入maven项目

    github给的地址是类似https://github.com/xxx/se.git格式; 如何将其用eclipse导入呐? 第一步, Import Projects from Git 导入成功后 第 ...

  3. 使用Travis进行持续集成

    使用Travis进行持续集成 廖雪峰 持续集成:Continuous Integration,简称CI,意思是,在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测 ...

  4. 基于OpenGL编写一个简易的2D渲染框架-12 重构渲染器-BlockAllocator

    BlockAllocator 的内存管理情况可以用下图表示 整体思路是,先分配一大块内存 Chunk,然后将 Chunk 分割成小块 Block.由于 Block 是链表的一个结点,所以可以通过链表的 ...

  5. DateFormat工具类

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java. ...

  6. Cachefiled

    NFS不同共享客户端间的数据不同步 问题现象 当您用台ECS挂载同一个NFS文件系统,在ECS-A上append写文件,在ECS-B用tail -f观察文件内容的变化.在ECS-A写完之后,在ECS- ...

  7. PCA和SVD(转)

    最近突然看到一个问题,PCA和SVD有什么关系?隐约记得自己照猫画虎实现的时候PCA的时候明明用到了SVD啊,但SVD(奇异值分解)和PCA的(特征值分解)貌似差得相当远,由此钻下去搜集了一些资料,把 ...

  8. ie6浏览器的安装

    试过各种方法都不行,最后用ie8卸载工具,不仅卸载了ie8还自动安装了ie6,非常棒!!!我的空间有那款卸载工具.

  9. poj1088(记忆化搜索入门题)

    题目链接:http://poj.org/problem?id=1088 思路: 明显的记忆化搜索题,用dp[i][j]表示从(i,j)出发能滑的最远距离,用dfs搜索,若dp[x][y]>0即已 ...

  10. visual code golang配置

    前言 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org), 导致一些包无法安装,最终会导致环境搭建失败,跟据这个教程几步,我们将可以快速的构建golang ...