LOJ10121 与众不同

题目描述

A 是某公司的 CEO,每个月都会有员工把公司的盈利数据送给 A,A 是个与众不同的怪人,A 不注重盈利还是亏本,而是喜欢研究「完美序列」:一段连续的序列满足序列中的数互不相同。

A 想知道区间 [L,R] 之间最长的完美序列长度。

输入格式

第一行两个整数 N,MN 表示连续 N 个月,编号为 0 到 N1,M 表示询问的次数;

第二行 N 个整数,第 i 个数表示该公司第 i 个月的盈利值 ai

接下来 M 行每行两个整数 L,R,表示 A 询问的区间。

输出格式

输出 M 行,每行一个整数对应询问区间内的完美序列的最长长度。

样例

样例输入

9 2
2 5 4 1 2 3 6 2 4
0 8
2 6

样例输出

6
5

数据范围与提示

对于全部数据,1N,M2×10^5,0LRN1,ai10^6。

___________________________________________________________________________________________

很神奇的题目,动态规划+RMQ

last[i]:表示数列中第i个数上一次出现的位置,因为可能出现负数,所以要加上maxa。

st[i]:表示数列中第i个数为结尾的完美数量的开始位置。

f[i]:表示数列中第i个数为结尾的完美序列的长度。

所以,st[i]=max(st[i-1],last[i]+1)

而,f[i]=i-st[i]+1

那么,[l,r]区间内的最长完美序列的长度怎么求呢?

l到r的区间,可以分成两部分,左边的部分他们的st[]不再区间内,也就是小于l,右边的部分可能在区间内,也就是大于等于l。

左边的部分的最大长度当然就是左右部分的边界减去l,二右边的部分则需要查找啊最大值,就用动力RMQ.

___________________________________________________________________________________________

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=2e5+10;
 4 const int maxa=1e6+10;
 5 int last[maxa<<1],st[maxn],f[maxn][20];
 6 int n,m;
 7 int _log[maxn];
 8 int query(int l,int r)
 9 {
10     if(l>r)return -10000000;
11     int lg=_log[r-l+1];
12     return max(f[l][lg],f[r-(1<<lg)+1][lg]);
13 }
14 int main()
15 {
16     scanf("%d%d",&n,&m);
17     _log[0]=-1;
18     for(int x,i=1;i<=n;++i)
19     {
20         _log[i]=_log[i>>1]+1;
21         scanf("%d",&x);
22         st[i]=max(st[i-1],last[x+maxa]+1);
23         f[i][0]=i-st[i]+1;
24         last[x+maxa]=i;
25     }
26     for(int j=1;j<=20;++j)
27         for(int i=1;i+(1<<j)-1<=n;++i)
28             f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
29     int l,r;
30     while(m--)
31     {
32         scanf("%d%d",&l,&r);
33         ++l,++r;
34         int tp=lower_bound(st+l,st+r+1,l)-(st+l);
35         int tpp=query(tp+l+1,r);
36         printf("%d\n",max(tp,tpp));
37     }
38     return 0;
39 }
View Code

 

转载于:https://www.cnblogs.com/gryzy/p/10302202.html

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

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

相关文章

[计算机网络][总结][常见问题][TCP][三次握手][四次挥手]

TCP三次握手 四次挥手 三次握手 目的&#xff1a;保证传输的可靠性,为了防止已失效的连接请求报文段突然又传送到了服务端&#xff0c;因而产生错误。主要防止资源的浪费。 具体过程&#xff1a;当客户端发出第一个连接请求报文段时并没有丢失&#xff0c;而是在某个网络节点…

第二十二期:淘宝技术架构分享

一&#xff0c;淘宝技术架构 1.UIC: 用户中心(User Interface Center),提供所有用户信息相关的读写服务&#xff0c;如基本信息&#xff0c;扩展信息&#xff0c;社区信息&#xff0c;买卖家信用等级等等。 淘宝现在有两类卖家B 和C&#xff0c;这是通过在用户身上打不同的标签…

Linux启动过程以及初始化

Linux系统启动 POST加电自检–> 硬件检查 引导加载程序BIOS(Boot Sequence)–> 找到主引导记录&#xff08;MBR&#xff09;&#xff0c;引导加载程序检查分区表并找到一个可引导的分区 加载对应引导上的MBR(bootloader)–> 引导加载程序将所选操作系统的内核加…

Deep learning with Python 学习笔记(9)

神经网络模型的优化 使用 Keras 回调函数 使用 model.fit()或 model.fit_generator() 在一个大型数据集上启动数十轮的训练&#xff0c;有点类似于扔一架纸飞机&#xff0c;一开始给它一点推力&#xff0c;之后你便再也无法控制其飞行轨迹或着陆点。如果想要避免不好的结果&…

linux c 读取摄像头,Linux下onvif客户端获取ipc摄像头 获取能力:GetCapabilities

getcapabilities:获取能力,主要目的获取设备能力信息(获取媒体服务地址)鉴权&#xff1a;但是在调用获取设备能力之前是需要鉴权的。onvif协议规定&#xff0c;部分接口需要鉴权&#xff0c;部分接口不需要鉴权&#xff0c;在调用需要鉴权的接口时不使用鉴权&#xff0c;会导致…

[计算机网络][HTTP]

定义 超文本传输协议&#xff08;英文&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是互联网上应用最为广泛的一种网络协 议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由 统一资…

8次c语言上机作业答案,计算机二级C语言上机题库及答案2017

计算机二级C语言上机题库及答案2017引导语&#xff1a;我们将要迎来2017年9月份的计算机考试&#xff0c;大家准备好了吗&#xff0c;以下是百分网小编分享给大家的计算机二级C语言上机题库及答案2017&#xff0c;欢迎测试!一、填空题给定程序中已建立一个带有头结点的单向链表…

Swagger Learing - Spring Boot 整合swagger

学习了一下swagger。 这是编写的Demo 源码 https://github.com/AmberBar/Learning/tree/master/swagger-learning/swagger 需要的小伙伴可以clone直接运行 访问地址 http://localhost:9999/swagger-ui.html#/ 转载于:https://www.cnblogs.com/amberbar/p/10308256.html

[Leedcode][JAVA][第202题][快乐数]

【问题描述】 编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为&#xff1a;对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和&#xff0c;然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果 可以变为…

Java类加载机制的理解

算上大学&#xff0c;尽管接触Java已经有4年时间并对基本的API算得上熟练应用&#xff0c;但是依旧觉得自己对于Java的特性依然是一知半解。要成为优秀的Java开发人员&#xff0c;需要深入了解Java平台的工作方式&#xff0c;其中类加载机制和JVM字节码这样的核心特性。今天我将…

[剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

【问题描述】[第3题][无重复字符的最长字串] 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2:输入: "bb…

java学习(172): 使用class实现反射编程,创建对象

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

关于mysql中GROUP_CONCAT函数的使用

偶然看到公司存储过程中有个字符串拼接的函数&#xff0c;改bug过程中使用到了&#xff0c;还挺有用的&#xff0c;于是记录下来方便记忆&#xff0c;帮助有需要的人。 这是我需要整理的串&#xff0c;他是调用了一个存储过程&#xff0c;传入组织机构的id和迭代层数&#xff0…

java学习(173):class反射编程方法

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

[剑指offer]面试题第[25]题[Leedcode][JAVA][第21题][合并两个有序链表]

【问题描述】[简单] 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a;输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4【解答思路】 1. 非递归 时间复杂度&…

Windos下navcat连接虚拟机中的mysql

进入mysql命令行&#xff0c; 使用root用户&#xff0c;密码&#xff1a;youpassword&#xff08;你的root密码&#xff09;连接到mysql服务器&#xff1a;  # mysql -u root -proot   mysql>GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY youpassword WITH GRAN…

第二十三期:大规模网站架构?你是否熟悉?

大规模网站架构 •PHP –facebook,yahoo •Java –taobao,163 •Python –google •.NET –MySpace 语言不是可伸缩性的关键&#xff0c;架构才是关键 网站架构的目标 •高可用性(High Availability) •可伸缩性(Scalability) •高性能(High Performance) 事务 …

[Leedcode][JAVA][第98题][验证二叉搜索树]

【问题描述】[第98题][验证二叉搜索树][中等] 给定一个二叉树&#xff0c;判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征&#xff1a;节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜…

图解CPU?

了解CPU 芯片组 CPU微观图 Cache层次结构 Cache-续 Xeon 5600系列CPU CPU内部各部件访问速度 False sharing问题 Cache lines Intel Sandy Bridge来了 CPU拓扑结构图 Cache相关硬件事件

c语言获取dll文件路径,C语言URLDownloadToFile获取文件下载进度

URLDownloadToFile是urlmon.dll提供的网络操作API&#xff0c;可以用于从指定的URL下载文件到本地&#xff0c;在C中通过类很容易实现下载进度的获取&#xff0c;今天需要在C语言中使用到这个函数&#xff0c;这里记录一下使用方法。该函数的定义如下所示。HRESULT URLDownload…