AT1219 歴史の研究 解题报告
AT1219 歴史の研究
题意
给定一个长为\(n\)的序列\(\{a\}\),询问区间\(a*cnt_a\)的最大值,即某个值乘上出现次数
回退莫队板子
只右移右指针和左指针每次回到块结尾即可。
Code:
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define ll long long
const int N=1e5+10;
using std::max;
using std::min;
int n,q,yuy[N],a[N],bee[N];
struct node
{
int l,r,lp,id;
node(){}
node(int l,int r,int lp,int id){this->l=l,this->r=r,this->lp=lp,this->id=id;}
bool friend operator <(node a,node b){return a.lp==b.lp?a.r<b.r:a.lp<b.lp;}
}dew[N];
ll ans,tans,Ans[N];
void add(int p)
{
++bee[a[p]];
ans=max(ans,1ll*bee[a[p]]*yuy[a[p]]);
}
int main()
{
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",a+i),yuy[i]=a[i];
std::sort(yuy+1,yuy+1+n);
int m=std::unique(yuy+1,yuy+1+n)-yuy-1;
for(int i=1;i<=n;i++) a[i]=std::lower_bound(yuy+1,yuy+1+m,a[i])-yuy;
int B=sqrt(n)+1,qn=0;
for(int l,r,i=1;i<=q;i++)
{
scanf("%d%d",&l,&r);
if(r-l<=B)
{
ans=0;
for(int j=l;j<=r;j++)
{
++bee[a[j]];
ans=max(ans,1ll*bee[a[j]]*yuy[a[j]]);
}
Ans[i]=ans;
for(int j=l;j<=r;j++)
bee[a[j]]=0;
}
else
dew[++qn]=node(l,r,(l-1)/B+1,i);
}
std::sort(dew+1,dew+1+qn);
for(int l,r,bcnt=0,i=1;i<=qn;i++)
{
if(dew[i].lp!=bcnt)
{
bcnt=dew[i].lp;
ans=0;
memset(bee,0,sizeof bee);
l=min(dew[i].lp*B,n)+1,r=l-1;
}
while(r<dew[i].r) add(++r);
tans=ans;
while(l>dew[i].l) add(--l);
Ans[dew[i].id]=ans;
int tl=l;
ans=tans,l=min(dew[i].lp*B,n)+1;
for(int j=tl;j<l;j++) --bee[a[j]];
}
for(int i=1;i<=q;i++) printf("%lld\n",Ans[i]);
return 0;
}
2019.1.28
AT1219 歴史の研究 解题报告的更多相关文章
- AT1219 歴史の研究 回滚莫队
可在vj上提交:https://vjudge.net/problem/AtCoder-joisc2014_c 题意: IOI 国历史研究的第一人--JOI 教授,最近获得了一份被认为是古代 IOI 国 ...
- AT1219 歴史の研究
附带权值的类区间众数问题?不是很好策啊 发现题目没有强制在线,而且也只有询问操作,那么可以考虑莫队 但是这里的莫队有一个很显著的特征,插入的时候很好维护答案,但是删除的时候不好回退 那么有没有什么办法 ...
- AT1219 歴史の研究[回滚莫队学习笔记]
回滚莫队例题. 这题的意思大概是 设 \(cnt_i\) 为 l ~ r 这个区间 \(i\) 出现的次数 求\(m\) 次询问 求 l~r 的 max {\(a_i\) * \(cnt_i\)} \ ...
- [JOISC2014]歴史の研究/[BZOJ4241]历史研究
[JOISC2014]歴史の研究/[BZOJ4241]历史研究 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A(A_i\le10^9)\),定义一个元素对一个区间\([l,r]\)的 ...
- 题解 AT1219 【歴史の研究】
莫队 简单分析:题面含有IOI(惊),可知此题是IOI(数字三角形)难度(逃). 思路:回滚莫队 当然很多人都是抱着学回滚莫队的目标来看这道题的,所以这里介绍一下回滚莫队. 1.按莫队的思路讲询问排序 ...
- [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)
Description “我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力.”——<The Grimoire of Marisa>雾雨魔理 ...
- 【未完成0.0】Noip2012提高组day2 解题报告
第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...
- ZOJ 1093 Monkey and Banana (LIS)解题报告
ZOJ 1093 Monkey and Banana (LIS)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- 人生第一场CTF的解题报告(部分)
解题报告 濮元杰部分: 王者归来: 120 场景 小王入职了一段时间,最近有点无聊.Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到 ...
随机推荐
- [Spark][Hive]外部文件导入到Hive的例子
外部文件导入到Hive的例子: [training@localhost ~]$ cd ~[training@localhost ~]$ pwd/home/training[training@local ...
- Docker环境编译时的错误记录
1)报错一docker-compose -f compose/app.yaml -f compose/backend.yaml -f compose/proxy.yaml build peatio b ...
- 【2016.3.19】作业 分析一个很有(wu)趣(liao)的小程序
问题1:这个程序要找的是符合什么条件的数? 能够整除2-32中所有数仅除了在此之中的两个相邻的数,比如能整除2-29,且不能整除30,31.当然,这只是举个例子. 问题2:这样的数存在么?符合这一条件 ...
- Individual Project - Word frequency program——12061154Joy
Description&Requirement: http://www.cnblogs.com/jiel/p/3978727.html 项目时间估计 理解项目要求: 1h 构建项目逻辑: 1h ...
- M2阶段测试报告
一.安全漏洞测试报告: http://files.cnblogs.com/hotsbuaa/M2-安全漏洞测试.pdf 二.全面兼容测试: http://files.cnblogs.com/hotsb ...
- 使用Eclipse可以方便的统计工程或文件的代码行数,
使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expressi ...
- 7-Python3从入门到实战—基础之数据类型(字典-Dictionary)
Python从入门到实战系列--目录 字典的定义 字典是另一种可变容器模型,且可存储任意类型对象:使用键-值(key-value)存储,具有极快的查找速度: 字典的每个键值(key=>value ...
- squid反向代理
反向代理的作用是就爱那个网站中的静态自原本地化.也就是将一部分本应该有原是服务器处理的请求交给 Squid 缓存服务处理 编辑 Squid 服务程序的配置文件*(正向代理与反向代理不能同时使用,) ...
- [转帖]super-inspire
quickStart/快速开始 访问临时服务器地址, 你可以在这里选择一个喜欢的系统, 然后系统将自动创建该系统的容器, 并自动打开新的网页进入 web shell 交互. 目前支持 Ubuntu14 ...
- laravel 共享session问题总结
我现在有一个A系统已经上线了,但是要开始研发另外一个功能,我打算把这个功能独立成一个B系统出来,放在其他域名下面,打算在这个A系统登录后,里面一个连接跳转到B系统,看到一些资料说用到共享Session ...