该题最直观的解决思路是先对数组进行排序,然后返回第k个元素即可,但是该方法的时间复杂度为 O(nlog(n)), 较高。比较高校的思路有两种:一种是堆排序的思路,一种是快拍的思路。
一、堆排序的思路。该思路设置容量为 k 的大顶堆,将剩余的元素每一个和堆顶元素进行比较,若比堆顶元素大则该元素必然不会是第 k 大的元素,直接处理下一个元素;若比...
分类:
其他好文 时间:
2015-08-29 17:04:59
阅读次数:
126
#include
#include
#include
using namespace std;
#define M 100010
#define MAXN 500
#define MAXM 500
int dp[M][18];
/*
*一维RMQ ST算法
*构造RMQ数组 makermq(int n,int b[]) O(nlog(n))的算法复杂度
*dp[i][j] 表示从i到i+2^j ...
分类:
编程语言 时间:
2015-08-18 22:56:29
阅读次数:
188
spoj 1811 LCS - Longest Common Substring
题意:
给出两个串S, T, 求最长公共子串。
限制:
|S|, |T|
思路:
dp O(n^2) 铁定超时
后缀数组 O(nlog(n)) 在spoj上没试过,感觉也会被卡掉
后缀自动机 O(n)
我们考虑用SAM读入字符串B;
令当前状态为s,同时最大匹配长度为len;...
分类:
其他好文 时间:
2015-08-14 21:29:35
阅读次数:
121
因为这题的线段长度是递增的....所以:
题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度nlog
Segment Game
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536...
分类:
编程语言 时间:
2015-08-12 23:44:15
阅读次数:
186
给出两种操作:
第i个0:在x位置插入一个长度为i的线段,并输出该线段共覆盖了多少之前加入的线段
1:删除第i次插入的线段
官方题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度nlog
思路很好理解,直接用一个线段树记录区间的左端点和右端点即可
#include ...
分类:
其他好文 时间:
2015-08-12 17:01:05
阅读次数:
123
Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中,或者发送Emial到指定账户。可以在官网这里下载Nlog:http://nlog-project.org/如果想使用NuGet下载,可以使用Visual Studio(本人使用的Visua...
分类:
其他好文 时间:
2015-08-11 15:39:30
阅读次数:
653
下面总结几种常见的排序算法,包括插入排序、选择排序、快速排序、归并排序和堆排序。时间复杂度:插入排序选择排序快速排序归并排序堆排序Ο(n2)Ο(n2)Ο(nlog(n))Ο(nlog(n))Ο(nlog(n))算法概述:插入排序:每次从未排好序的数据堆中拿出一个数,插入到已排好序的数据队列的正确.....
分类:
编程语言 时间:
2015-08-06 12:42:28
阅读次数:
149
最大K个数: 当数据量小时:快排和堆排O(Nlog(N));部分排序(选择or交换)O(N*K) 快排加分治O(N*log(K));二分查找当数据是整数且重复数比较多时:计数排序;若不是整数,则分区间计数。当数据量大时:1)小根堆:O(N*KlogK)2)分治法:hash成M份数据,取每份数据的前K...
分类:
其他好文 时间:
2015-07-11 22:46:10
阅读次数:
194
给定一个整数数组,让你从该数组中找出最小的K个数
思路:
最简洁粗暴的方法就是将该数组进行排序,然后取最前面的K个数即可。但是,本题要求的只是求出最小的k个数即可,用排序可以但显然有点浪费,比如让求10000个整数数组中的最小的10个数,用排序的话平均时间复杂度差为Nlog(N)。
于是想到了,用堆来实现,但是自己实现又太麻烦,想到了java里面的TreeSet,先将K个数放入TreeSet中,由于TreeSet会对里面的元素进行排序,所以在TreeSet中的元素是有序的,以后没插入一个元素,将TreeSe...
分类:
其他好文 时间:
2015-07-01 12:24:55
阅读次数:
153