[HEOI2012]采花

题目描述

萧薰儿是古国的公主,平时的一大爱好是采花。

今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花。

花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于公主采花。公主每次采花后会统计采到的花的颜色数,颜色数越多她会越高兴!同时,她有一癖好,她不允许最后自己采到的花中,某一颜色的花只有一朵。为此,公主每采一朵花,要么此前已采到此颜色的花,要么有相当正确的直觉告诉她,她必能再次采到此颜色的花。

由于时间关系,公主只能走过花园连续的一段进行采花,便让女仆福涵洁安排行程。福涵洁综合各种因素拟定了m个行程,然后一一向你询问公主能采到多少朵花(她知道你是编程高手,定能快速给出答案!),最后会选择令公主最高兴的行程(为了拿到更多奖金!)。

说明

n,m,c210^6

题解:

一句话题意:求询问区间内出现次数大于1的数有多少个。

直接处理不现实。可以离线。

询问按照左端点排序。

可以类比HH的项链、

预处理每个点nxt[i],表示i位置相同颜色的下一个位置。

 

树状数组每个点(点的值是c)为1的含义是,这个点在当前询问区间左端点为L的时候,是从L开始的第二个出现的这个数c

开始把所有颜色第二次出现的位置+1

那么对于所有的询问左端点为L的询问,直接query(r)-query(l-1)即可。

可以理解,第三次及以上出现的不算重,一次的也不会算。必须r包含第二次出现的才会统计上。

L右移的时候,把nxt[L]-=1,nxt[nxt[L]]+=1因为,nxt[L]原来是第二个,现在会变成第一个。

nxt[nxt[L]]就变成第二个了。

 

代码:

 

#include<bits/stdc++.h>
using namespace std;
const int N=2000000+5;
int n,m,c;
int has[N],nxt[N];
int a[N];
int f[N];
void add(int x,int d){for(;x<=n;x+=x&(-x)) f[x]+=d;
}
int query(int x){int ret=0;for(;x;x-=x&(-x)) ret+=f[x];return ret;
}
struct node{int l,r;int id;bool friend operator <(node a,node b){return a.l<b.l;}
}q[N];
int ans[N];
int pos[N];
int main()
{scanf("%d%d%d",&n,&c,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);has[a[i]]++;if(pos[a[i]])nxt[pos[a[i]]]=i;if(has[a[i]]==2) add(i,1);pos[a[i]]=i;}int l,r;for(int i=1;i<=m;i++){scanf("%d%d",&q[i].l,&q[i].r);q[i].id=i;}sort(q+1,q+m+1);int L=1;for(int i=1;i<=m;i++){while(L<q[i].l){if(nxt[L]) add(nxt[L],-1);if(nxt[nxt[L]]) add(nxt[nxt[L]],1);L++;}ans[q[i].id]=query(q[i].r)-query(q[i].l-1);}for(int i=1;i<=m;i++){printf("%d\n",ans[i]);}return 0;
}

 

总结:
对于离线区间询问的情况——BY LYD:

1.cdq分治(对于前一半对后一半的影响)

2.整体二分(对于答案)

3.区间排序(对于处理答案先后顺序,便于区间之间转化的时候降低复杂度(经典的有如莫队))

转载于:https://www.cnblogs.com/Miracevin/p/9676591.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改SQL server数据库中的逻辑文件名

使用 FILE_NAME 函数可以返回给定文件标识 (ID) 号的逻辑文件名如下 下例返回 file_ID 为 1 的文件名&#xff08;master 数据库文件&#xff09;。 1USEmaster2SELECTFILE_NAME(1)当我们进行从一个备份中还原数据库时&#xff0c;数据库的逻辑文件名是不会改变的。 可用 ALTER…

java根据模板生成PDF

首先你的制作一个pdf模板&#xff1a; 1.先用word做出模板界面 画单元格的时候需要考虑值的长度&#xff0c;像这里的状态可能会很长 2.文件另存为pdf格式文件 使用福昕PDF 打开&#xff0c;添加文本&#xff0c;以及需要添加值的地方&#xff0c;设置文本域&#xff0c;这个就…

android bilibili搜索框,仿bilibili搜索框效果(三句代码实现)

SearchDialog仿bilibili搜索框效果(只需要三句话即可实现)先看预览图(转换后有一点点失真):前言1,支持搜索历史(已经做了数据库存储了)2,基本与bilibili的搜索效果差不多了3,需要修改更多内容可以下载library自己修改4,本人非大牛,有不妥之处请Issues指出,谢谢5,参考了该po的文…

元璟资本陈洪亮解析人货场融合 消费者变成“合作者”

一年一度的云栖大会是新科技大放异彩的舞台&#xff0c;而创业者们同样聚集于此&#xff0c;探讨前沿的商业模式。 在今日举行的“云栖大会 - 阿里云创新中心年度盛典”上&#xff0c;元璟资本合伙人陈洪亮发表演讲&#xff0c;他从新消费和新零售的诸多创新现象出发&#xff0…

通用数据库显示程序

数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页. 阿余经常写一些数据库相关的程序,当然离不开显示库中的数据了,说实话,做这样的程序真是无聊啊,所以,阿余就想写个函数,一个通用的数据库显示函数.要求如下: 1. 能显示指定的字段,当然,字段名和显示的文字可以不一样…

2019.8.13 sdfzoier

lxy: lixf acwing上的118,126 zhangtingyu zhaosirui wujialin 转载于:https://www.cnblogs.com/caterpillor/p/11186047.html

鸿蒙 电视盒子,目前最强的电视盒子:性价比最高的5款电视盒子

电视盒子作为目前人们满足精神生活的一个电子产品&#xff0c;产品的质量自然是要有很高的保证&#xff0c;并且要有较好的使用体验&#xff0c;在产品价格上也要让消费者感到实惠&#xff0c;以上这些要求也是我们所说的性价比&#xff0c;性价比最高的盒子&#xff0c;也足以…

CDH-5.7.0:基于Parcels方式离线安装配置

http://shiyanjun.cn/archives/1728.html https://www.waitig.com/cdh%E5%AE%89%E8%A3%85.html

From 7.8 To 7.14

From 7.8 To 7.14 大纲 学科 英语的话每天早上背单词, 争取每天做一篇完型, 一篇阅读, 一篇短文填空, 一篇改错, 一篇七选五??? 似乎太多了, 先试一下吧 语文的话, 尝试翻译一下文言文??? 理科先不管他 竞赛 考试, 题解, 做题, 恩, 应该差不多吧 7.12 考试, 改题... 今天…

html邮箱地址的正则表达式,javascript写一个校验邮箱的正则表达式

test判断字符串是否符合正则的要求注意注意&#xff1a;字符串有一部分符合要求&#xff0c;test就会判断为真。这个时候我们可以加一个行首(^)行尾($)来控制分析我们根据常用邮箱写一个中文的校验规则如下&#xff1a;我们常用的邮箱格式&#xff1a;yancamy126.comyan233__qq…

系统需求分析文档需要考虑的问题

最近作了几次需求分析,有了一些经验,特共享出来.欢迎指正.我认为在系统需求分析中,有三个问题需要注意,即系统涵盖范围用户对上线时间的要求系统上线对目前系统整体的影响系统覆盖的范围很多用户都想的是,这次一定要把所有遇到的问题解决完. 也就说,客户潜在的心理是对系统较高…

洛谷 P1414 又是毕业季II (多个数的最大公因数)

这道题其实不难&#xff0c;但是我想复杂了 我想的是把每个数质因数分解&#xff0c;然后每次就枚举每个质因数 来求最小公倍数。 然后想了想这样复杂度将会非常的大&#xff0c;肯定超时 然后看了题解发现不需要质因数分解&#xff0c;直接存因数的个数就好了 c[i]表示i这个因…

前端之CSS

什么是CSS&#xff1f; 在标签上设置标签的style属性。 编写CSS的方法 一、直接在标签中写style属性。 二、在head标签中写style标签&#xff0c;这里就需要选择器选择所需的标签 1、id选择器&#xff0c;以#开头&#xff0c;例子如下&#xff1a; <!DOCTYPE html> <h…

[asp]统计在线人数情况

[asp]统计在线人数情况 以前ASP版本的统计在线。因为是从以前的系统中提取出来的。使用的话要修改下。 IfCbool(Application("MARKONLINE")) TrueThenCheckOnline()FunctionCheckOnline() DIMIP,rsPrv,Sql IfDBSTATE FalseThenDbOpen() SetrsPrvServer.Crea…

android 局域网邻居,局域网内无邻居 它们去哪儿了?

最近不知道是炎炎夏日的原因&#xff0c;还是部分地区雨水过多的问题&#xff0c;造成了好多小伙伴反应说&#xff0c;无法在网络中看到同在一个局域网中的其他电脑、服务器或打印机。这个问题说大不大&#xff0c;说小不小&#xff0c;但很难用几句话把问题解决&#xff0c;所…

svg 线条动画浅尝

看了别人网站的svg动画觉得非常舒服,自己尝试实现一下效果如下: 实现需要明白2个关于svg的css属性 1. stroke-dasharray stroke-dasharray: <percentage> | <length> | inherit数与数之间用逗号或者空白隔开&#xff0c;指定短划线和缺口的长度。如stroke-dasharr…

Ajax 的乱码问题(2)

上次说的是“发送数据”时乱码的处理方法。那么“接收数据”呢&#xff1f;乱码问题弄得我快疯了&#xff0c;所以废话也不多说了&#xff0c;总结如下&#xff1a;服务端&#xff1a;///<summary>///Ajax 格式数据到本地客户端///</summary>///<param name&quo…

《子弹笔记术》[日]杉野干人(作者)epub+mobi+azw3格式下载

下载地址&#xff1a;点我下载后手机可浏览内容简介在工作中&#xff0c;越是复杂的项目&#xff0c;需要记录的事情越多&#xff0c;花费的时间自然也越多。如果使用传统笔记方法&#xff0c;规划将变成苦差事。子弹笔记术的核心是快速收集和处理信息&#xff0c;它可以帮助你…

html广告条效果,css3炫酷网站banner广告动画特效

这是一款可以用来遮罩网站banner或广告的动画特效插件。该特效使用的是 CSS3 animations。注意不是所有的浏览器都支持 CSS3 animations。如果你对 CSS3 animations还不了解&#xff0c;建议你先阅读W3C CSS Animations。HTMLhtml结构如下&#xff1a;Lost at sea?Relax - wev…

开始测试React Native App(上篇)

前期技术储备 前言 我是测试小白&#xff0c;小小白&#xff0c;小小小白&#xff0c;最近想在成了一定规模的项目中引入测试&#xff0c;于是找了许些资料学习&#xff0c;现在已经在项目中成功引入。于是想在思路明朗和记忆深刻的时候总结下学习路径以及写测试中遇到的难点、…