2017/9/28总结
来源:互联网 发布:linux环境下面安装字体 编辑:程序博客网 时间:2024/06/05 09:12
今天终于趁着空余时间a了一个题。。。。。
做一个题跟只看一个题真的不一样
大家都知道小明最喜欢研究跟序列有关的问题了,可是也就因为这样,小明几乎已经玩遍各种序列问题了。可怜的小明苦苦地在各大网站上寻找着新的序列问题,可是找来找去都是自己早已研究过的序列。小明想既然找不到,那就自己来发明一个新的序列问题吧!小明想啊想,终于想出了一个新的序列问题,他欣喜若狂,因为是自己想出来的,于是将其新序列问题命名为“小明序列”。
提起小明序列,他给出的定义是这样的:
①首先定义S为一个有序序列,S={ A1 , A2 , A3 , ... , An },n为元素个数 ;
②然后定义Sub为S中取出的一个子序列,Sub={ Ai1 , Ai2 , Ai3 , ... , Aim },m为元素个数 ;
③其中Sub满足 Ai1 < Ai2 < Ai3 < ... < Aij-1 < Aij < Aij+1 < ... < Aim ;
④同时Sub满足对于任意相连的两个Aij-1与Aij都有 ij - ij-1 > d (1 < j <= m, d为给定的整数);
⑤显然满足这样的Sub子序列会有许许多多,而在取出的这些子序列Sub中,元素个数最多的称为“小明序列”(即m最大的一个Sub子序列)。
例如:序列S={2,1,3,4} ,其中d=1;
可得“小明序列”的m=2。即Sub={2,3}或者{2,4}或者{1,4}都是“小明序列”。
当小明发明了“小明序列”那一刻,情绪非常激动,以至于头脑凌乱,于是他想请你来帮他算算在给定的S序列以及整数d的情况下,“小明序列”中的元素需要多少个呢?
这个题目如果去掉那个距离大于d的条件,那么必然是一个普通的LIS,但是加上那个条件后就变得复杂了。
我用的线段树的解法。。。就是采用延迟更新的做法,用为距离要大于d啊,所以我们在循环到第i的时候,就对(i-d-1)这个点进行更新,因为如果在(i-d-1)这个点更新了,会对后面的造成影响,然后线段树的tree【】数组存的是以i结尾的最长lis,那么每次询问的时候就找最大的tree【】就可以了。。。
也是迷。。。。。。。。希望国庆放假能好好a题。。。。。
- 2017/9/28总结
- 总结-2017/9/28
- 2017-9-28离线赛总结
- 9/28总结
- 总结-2017/9/4
- 总结-2017/9/7
- 总结-2017/9/10
- 总结-2017/9/14
- 2017/9/14总结
- 总结-2017/9/17
- 2017/9/17总结
- 总结-2017/9/21
- 总结-2017/9/24
- 2017/9/3 训练总结
- 2017/9/10训练总结
- 2017-9-17考试总结
- 2017/9/18学习总结
- 2017-9-19考试总结
- 机器学习作业1
- [[NSBundle mainBundle]pathForResource..取值为空
- 字符串匹配-扩展KMP
- jsp页面的doGet()方法和doPost()方法
- 文章标题 动画Html
- 2017/9/28总结
- 【Python】2.x与3.x区别
- content-type
- Lambda表达式之map reduce & groupingBy
- 新人第一次用html做的页面
- 中国剩余定理
- ELM(extreme learning machine)
- php session与cookie的一些认识
- 链接