解题:HEOI 2012 采花
题外话:LYD说他当时看错题了,考场爆零了,然后有了作诗这道题=。=
离线处理询问,按右端点递增排序,然后对于每种花$flw[i]$,我们求一个$pre[flw[i]]$表示这种花上一次出现的位置。那么扫描每一朵花,然后一个询问右端点的花出现的贡献就是使得$[pre[pre[i]]+1,pre[i]]$这段可以多采到至少$1$朵花,当扫到询问左端点就单点统计答案。用一个数据结构进行区间修改+单点求和即可
洛谷不知道为啥把数据加强到了$2*10^6$,听说是卡莫队(不知所淦),然后把正常的线段树也给卡掉了,遂稍微卡了卡常+O2,最慢一个点1600+ms水过(还可以继续优化的说)
// luogu-judger-enable-o2
#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
struct a{int l,r,id,ans;}p[N];
int flw[N],pre[N],las[N],outp[N];
int val[*N],laz[*N];
int n,c,m;
bool cmp(a x,a y)
{
return x.r==y.r?x.l<y.l:x.r<y.r;
}
bool com(a x,a y)
{
return x.id<y.id;
}
inline int read()
{
int ret=;
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) ret=(ret<<)+(ret<<)+(ch^),ch=getchar();
return ret;
}
inline void release(int nde,int l,int r)
{
if(laz[nde])
{
int mid=(l+r)/,ls=*nde,rs=*nde+;
laz[ls]+=laz[nde],laz[rs]+=laz[nde];
val[ls]+=(mid-l+)*laz[nde],val[rs]+=(r-mid)*laz[nde]; laz[nde]=;
}
}
void change(int nde,int l,int r,int nl,int nr)
{
if(l>nr||r<nl)
return ;
else if(l>=nl&&r<=nr)
val[nde]+=r-l+,++laz[nde];
else
{
int mid=(l+r)/,ls=*nde,rs=*nde+; release(nde,l,r);
change(ls,l,mid,nl,nr),change(rs,mid+,r,nl,nr);
val[nde]=val[ls]+val[rs];
}
}
int query(int nde,int l,int r,int pos)
{
if(l==pos&&r==pos) return val[nde]; release(nde,l,r);
int mid=(l+r)/,lr=(pos<=mid),nd=lr?(nde<<):(nde<<|);
int nl=lr?l:(mid+);int nr=lr?mid:r;
return query(nd,nl,nr,pos);
}
int main ()
{
register int i,p1=;
n=read(),c=read(),m=read();
for(i=;i<=n;i++) flw[i]=read();
for(i=;i<=m;i++) p[i].id=i,p[i].l=read(),p[i].r=read();
for(i=;i<=n;i++) pre[i]=las[flw[i]],las[flw[i]]=i;
sort(p+,p++m,cmp);
for(i=;i<=n;i++)
{
change(,,n,pre[pre[i]]+,pre[i]);
while(p1<=m&&p[p1].r==i)
p[p1].ans=query(,,n,p[p1].l),p1++;
}
for(i=;i<=m;i++) outp[p[i].id]=p[i].ans;
for(i=;i<=m;i++) printf("%d\n",outp[i]);
return ;
}
解题:HEOI 2012 采花的更多相关文章
- [BZOJ 2743] [HEOI 2012] 采花
Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整数 \ ...
- [HEOI 2012] 采花
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2743 [算法] 首先预处理nxt[]数组 , 其中 , nxt[i]表示下一个和i号 ...
- [ SDOI 2009 ] HH的项链 & [ HEOI 2012 ] 采花
\(\\\) \(Description\) 给出一个长为\(N\)的序列,\(M\)次询问区间\([L_i,R_i]\)内不同数字的个数. \(N\in [1,5\times 10^4]\),\(M ...
- 采花 flower
采花 flower 题目描述 萧芸斓是 Z 国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳 了 n 朵花,花有 c 种颜色(用整数 1- ...
- 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
- BZOJ 2743 【HEOI2012】 采花
题目链接:采花 这道题一眼看去,一个很显然的想法就是莫队.但是数据范围是\(10^6\)级别的,莫队显然已经过不去了. 其实感觉这道题和以前写过的一道题HH的项链很像.只不过那道题要求的是区间出现次数 ...
- 【HEOI2012】采花 BZOJ2743
Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...
- 采花 bzoj 2743
采花(1s 128MB)flower [题目描述] 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整 ...
- BZOJ 2743: [HEOI2012]采花
2743: [HEOI2012]采花 Time Limit: 15 Sec Memory Limit: 128 MBSubmit: 2056 Solved: 1059[Submit][Status ...
随机推荐
- Docker持久化存储与数据共享
一.Docker持久化数据的方案 基于本地文件系统的Volume:可以在执行docker create或docker run时,通过-v参数将主机的目录作为容器的数据卷.这部分功能便是基于本地文件系统 ...
- Streamr助你掌控自己的数据
博客说明 所有刊发内容均可转载但是需要注明出处. 项目简介 Streamr 致力于为世界实时数据的自由公平交换打造开源平台,并促进全球数据经济的发展.Streamr项目基于区块链技术,并向用户提供数据 ...
- [Github] Github使用教程
前言 Github是一个面向开源及私有软件项目的托管平台.它可以免费使用,并且速度快速,拥有超多的用户.是目前管理软件开发和发现已有代码的首选平台.下面将向Github新手介绍相关操作. 正文 注册 ...
- NO.5:自学python之路------标准库,正则表达式
引言 时间过的好快呀,终于6级也考完了,学习Python的进度也得赶赶了.好的开始这一周的内容. 正文 模块 模块的本质就是‘.py’结尾的文件,它可以用来从逻辑上组织Python代码,它可以是变量. ...
- 第十二次ScrumMeeting博客
第十二次ScrumMeeting博客 本次会议于11月30日(四)22时整在3公寓725房间召开,持续35分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容 ...
- Alpha阶段展示报告
一.团队成员简介与个人博客地址 江昊,项目经理 http://www.cnblogs.com/haoj/ 王开,后端开发 http://www.cnblogs.com/wk1216123/ 王春阳,后 ...
- spring--两个数据源模板
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-met ...
- 【转】python 三种遍历list的方法
[转]python 三种遍历list的方法 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list ...
- BETA-2
前言 我们居然又冲刺了·二 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 了解OpenCV下的视频参数及其调用方法 初步编码 接下来的计划 文档工作 速 ...
- Alpha版本冲刺(一)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...