AT1219-歴史の研究(历史研究)【回滚莫队】
正题
题目链接:https://www.luogu.com.cn/problem/AT1219
题目大意
nnn个数字,mmm次询问一个区间内ti∗it_i*iti∗i的最大值,tit_iti即区间内iii的出现次数。
解题思路
用回滚莫队的思想,对于在不同块中的询问,我们把左端点所在块的右端点作为分界点,显然以后所有与左端点在同一个块中的询问的右端点会单调上升,我们用指针维护这个答案和信息。
那在分界点左边的部分因为不会超过n\sqrt nn个,所以我们直接暴力搞就好了。
时间复杂度O(nn)O(n\sqrt n)O(nn)
codecodecode
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
const ll N=1e5+10;
struct node{ll l,r,id;
}q[N];
ll n,m,T,a[N],b[N],v[N],pr[N],c[N];
bool cmp(node x,node y){if(x.l/T==y.l/T)return x.r<y.r;return x.l<y.l;
}
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]),b[i]=a[i];sort(b+1,b+1+n);ll cnt=unique(b+1,b+1+n)-b-1;for(ll i=1;i<=n;i++)a[i]=lower_bound(b+1,b+1+cnt,a[i])-b;T=sqrt(n);for(ll i=1;i<=m;i++){scanf("%lld%lld",&q[i].l,&q[i].r);q[i].id=i;}sort(q+1,q+1+m,cmp);q[0].l=-T;ll r=0,bf_ans=0;for(ll x=1;x<=m;x++){if(q[x].l/T==q[x].r/T){ll ans=0;for(ll i=q[x].l;i<=q[x].r;i++)v[a[i]]++,ans=max(ans,v[a[i]]*b[a[i]]);pr[q[x].id]=ans;for(ll i=q[x].l;i<=q[x].r;i++)v[a[i]]=0;q[x].l=q[x-1].l;continue;}int tail=q[x].l/T*T+T-1;if(q[x].l/T!=q[x-1].l/T){for(ll i=1;i<=cnt;i++)c[i]=0;bf_ans=0;r=tail;}while(r<q[x].r)c[a[++r]]++,bf_ans=max(bf_ans,c[a[r]]*b[a[r]]);ll ans=bf_ans;for(ll i=tail;i>=q[x].l;i--)v[a[i]]++,ans=max(ans,(c[a[i]]+v[a[i]])*b[a[i]]);for(ll i=tail;i>=q[x].l;i--)v[a[i]]=0;pr[q[x].id]=ans;}for(ll i=1;i<=m;i++)printf("%lld\n",pr[i]);return 0;
}
AT1219-歴史の研究(历史研究)【回滚莫队】相关推荐
- 【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列
文章目录 T1:单峰排列 题目 题解 code T2:历史研究 题目 题解 code T3:大魔法师 题目 题解 code 我可能这辈子都更不出来狂欢赛5了,先咕咕 T1:单峰排列 题目 一个n的全排 ...
- 历史研究(回滚莫队)
问题 C: 历史研究 时间限制: 1 Sec 内存限制: 128 MB 提交: 61 解决: 2 [提交] [状态] [命题人:admin] 题目描述 IOI 国历史研究的大牛--JOI 教授,最 ...
- BZOJ4241历史研究题解--回滚莫队
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4241 分析 这题就是求区间权值乘以权值出现次数的最大值,一看莫队法块可搞,但仔细想想,莫 ...
- 【练习】BZOJ4241: 历史研究(回滚莫队)
题意 给定一个长度为 n n n的序列,并提出q" role="presentation">qqq个询问,每次询问要求回答区间 [l,r] [ l , r ] [l ...
- 【莫队/树上莫队/回滚莫队】原理详解及例题:小B的询问(普通莫队),Count on a tree II(树上莫队),kangaroos(回滚莫队)
文章目录 问题引入 介绍莫队算法及其实现过程 时间复杂度 莫队算法适用范围 莫队奇偶优化 普通莫队:小B的询问 树上莫队:SP10707 COT2 - Count on a tree II 回滚莫队: ...
- 【洛谷P6072 [MdOI2020] Path】【回滚莫队+Trie】
题意 给一棵 n n n个节点的树,边有边权.定义一条路径的权值为边权的异或和.找两条节点不相交的路径,使得这两条路径的权值和最大. n ≤ 30000 n\le 30000 n≤30000 分析 问 ...
- 2021牛客第五场 I.Interval Queries-回滚莫队
如图:一道很裸的回滚莫队,注意加入的操作和回滚的操作就好了. #include <cstdio> #include <cstring> #include <string& ...
- AT1219 歴史の研究 解题报告
AT1219 歴史の研究 题意 给定一个长为\(n\)的序列\(\{a\}\),询问区间\(a*cnt_a\)的最大值,即某个值乘上出现次数 回退莫队板子 只右移右指针和左指针每次回到块结尾即可. C ...
- git:历史版本回滚、重新回到最新版本及取消修改内容
重新检出历史版本 场景:需要回到之前的版本,修改参数执行一下代码 查看历史版本号 git log -10 #查看最近10次commit的记录 检出历史版本 git checkout <版本号&g ...
最新文章
- 闲来无事,总结 Xcode常用快捷键
- Xamarin只言片语系列
- 如何安装vscode网页版_Windows10专业版/企业版如何安装Microsoft store
- 自定义Exchange2003未送达报告(NDR)
- 你的“苦劳”,真的不值钱!
- 网络协议 8 - TCP协议(上):性恶就要套路深
- 刘浩(专业打劫三十年)20155307的预备作业02:
- UVA - 101:The Blocks Problem
- Java基础---继承
- Kylin Cube构建优化
- Python的并发并行[3] - 进程[1] - 多进程的基本使用
- OLED12864(SSD1306)驱动代码
- word to latex 2.56安装方法
- 法学生民法方面的论文选题,有什么推荐吗?
- UI设计理论和UI总结
- html5文字游戏制作工具,橙光文字游戏制作工具
- 关于Chrome的广告和弹窗拦截插件
- Python奇技淫巧之Pycharm活动模板配置
- Neo.4j 使用总结
- RTX 3060 快速配置GPU版本tensorflow
热门文章
- ajax 偶尔302,关于Ajax 中response出现302的一点见解
- 凉凉!面试阿里我被Redis技术专题给搞的昏倒在地~
- java线程带来的异常,java多线程练习之捕获子线程异常例子
- linux实验目的能学会什么意思,Linux实验.doc
- c语言 if 多个判断条件执行顺序_C语言之流程控制选择语句
- golang 修改nginx配置文件_「系统架构」Nginx调优,不可错过的几点
- python量化常用_Python量化常用函数
- 万字总结webpack实战案例配置
- linux取设备分辨率,linux 获取系统屏幕分辨率
- [Java网络编程基础]端口,协议