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安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到 ...
随机推荐
- Linux系统下本地yum镜像源环境部署-完整记录
之前介绍了Linux环境下本地yum源配置方法,不过这个是最简单最基础的配置,在yum安装的时候可能有些软件包不够齐全,下面说下完整yun镜像源系统环境部署记录(yum源更新脚本下载地址:https: ...
- 12.9 Daily Scrum
在一些实现上,开发人员提出了意见,经过讨论后,我们决定取消“推荐餐厅”的功能,增加了“菜谱分类”的功能. 同时更新了相关人员的任务. Today's Task Tomorrow's Task 丁辛 ...
- 2-Twenty First Scrum Meeting-20151221
任务安排 成员 今日完成 明日任务 闫昊 请假(数据库) 唐彬 请假(数据库) 史烨轩 尝试使用downloadmanager对notification进行更新 尝试使用downloadm ...
- Linux内核设计与实现 第四章
1. 什么是调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程). 这个管理程序就是调度程序,功能: 决定哪些进 ...
- CSS里Postion几个取值relative、absolute、static、fixed的区别和用法
---恢复内容开始--- static:静态定位,也是postion的默认值,没有定位,元素出现在正常的流中,忽略top\bottom\left\right或者z-index声明. relative: ...
- [2017BUAA软件工程]第0次作业
第一部分:结缘计算机 1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 选择计算机专业的一个重要原因是因为计算机专业的就业前景好,由于计算机本身具有的各种优点,现在几乎所有的 ...
- Jmeter 通过json Extracted 来获取 指定的值的id
在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName="iphone632g& ...
- js排序方法
function swap(ary, x, y) { if (x === y) return let temp = ary[x] ary[x] = ary[y] ary[y] = temp } //生 ...
- Typecho博客迁移
在新的机器上先搭建好一个新的Typecho博客,数据库名称和原博客相同(可以省不少事). 备份原来博客的usr目录. 备份mysql数据库,命令: mysqldump -uroot -p --all- ...
- 暂时刷完leetcode的一点小体会
两年前,在实习生笔试的时候,笔试百度,对试卷上很多问题感到不知所云,毫无悬念的挂了 读研两年,今年代笔百度,发现算法题都见过,或者有思路,但一时之间居然都想不到很好的解法,而且很少手写思路,手写代码, ...