
排序
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
不完全排序求第k小
题意求第k小的数题解排序中求解,但只需部分排序,时间复杂度O(n)。正常做法是把序列拍个序,然后直接输出位置为k的即可。但实际上没有必要使所有子序列都有序,只要让包含第k小的数的序列有序即可。以快速(二分)排序为例,每次选取一个值,进过一波操作后,y左边的数小于它,x右边的数大于它,x和y之间的数(有的话)已经有序了。据此,写出代码。代码#include<cstdio> #includ...原创 2018-07-14 08:15:49 · 348 阅读 · 0 评论 -
hihocoder1384 Genius ACM(倍增)
题目给定一个整数 m,对于任意一个整数集合 S,定义“校验值”如下:从集合 S 中取出 m 对数(即 2*M 个数,不能重复使用集合中的数,如果 S 中的整 数不够 m 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值 就称为集合 S 的“校验值”。现在给定一个长度为 n 的数列 A 以及一个整数 k。我们要把 A 分成若干段,使得 每一段的“校验值”都不超过 k。求最少需要分...原创 2018-07-14 17:05:37 · 590 阅读 · 0 评论 -
poj3630 Phone List(trie树)||(排序)(暴力)
题意 给出n个数,判断是否有数为另一个数的前缀。 题解1 排序+暴力比较 这个方法好简便。以字符串的形式记录下来,排序后,相邻两个字符串比较即可。时间复杂度O(nlogn)。 题解2 trie树 是前缀要考虑两种情况,有可能先是一个短位的数字A,再是一个长位的数字B。根据常识,B不可能是A的前缀。对于这种情况,在A数字的末尾做一个标记,如果由数字B从这个标记上经过,则A是B的...原创 2018-08-13 14:48:44 · 316 阅读 · 0 评论 -
CH1402 后缀数组(Hash)(二分)(排序)
题意 用hash、快排、二分来求后缀数组中的sa和height。 题解 hash+快排+二分 sa数组的朴素求法是用一个string存下来,然后直接对string排序,但这样会爆空间。如果对两个后缀进行逐字的比较复杂度会大大超出。 聪明的出题人想到了用二分+hash的方式来比较字符串的大小。hash的作用还是判断两个子串是否相等,二分的作用是求出第一个不相同的字符,比较这个字符即可得出...原创 2018-08-08 21:14:06 · 495 阅读 · 0 评论 -
洛谷2852 [USACO06DEC]牛奶模式Milk Patterns(Hash)(二分)(排序)
题目 农夫John发现他的奶牛产奶的质量一直在变动。经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠。我们称之为一个“模式”。 John的牛奶按质量可以被赋予一个0到1000000之间的数。并且John记录了N(1<=N<=20000)天的牛奶质量值。他想知道最长的出现了至少K(2<=K<=N)次的模式的长度。比如1 2 3 2 3 2...原创 2018-08-08 21:52:20 · 631 阅读 · 0 评论