社区
数据结构与算法
帖子详情
分享一个题目
DeDeWo
2012-10-06 09:54:30
已知一个有n个元素的数组 arr[1....n] 。 ( 1 < = n < = 100 w )
如果在数组的某个区间[a,b]( 也就是 arr[a]...arr[b] )中有一个数出现的次数超过这个区间[a,b]大小的50%,
那么称这个数叫fuck数。
对于M ( 1 < = M < = 100 w )次询问,每次询问输入两个数为A,B,要求输出数组arr的子区间arr[A...B]中的fuck数,如果不存在输出none。
...全文
273
15
打赏
收藏
分享一个题目
已知一个有n个元素的数组 arr[1....n] 。 ( 1 < = n < = 100 w ) 如果在数组的某个区间[a,b]( 也就是 arr[a]...arr[b] )中有一个数出现的次数超过这个区间[a,b]大小的50%, 那么称这个数叫fuck数。 对于M ( 1 < = M < = 100 w )次询问,每次询问输入两个数为A,B,要求输出数组arr的子区间arr[A...B]中的fuck数,如果不存在输出none。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
static163
2012-10-10
打赏
举报
回复
[Quote=引用 14 楼 的回复:]
搞定了,随机选取100次即可,误差为(1/2)^100 ,可以忽略不计。
散分
[/Quote]
误差是这么算的?那正确率呢
DeDeWo
2012-10-10
打赏
举报
回复
搞定了,随机选取100次即可,误差为(1/2)^100 ,可以忽略不计。
散分
huangxy10
2012-10-07
打赏
举报
回复
也可以用hash存,关键字为a,b.
只存有fuck数的区间,所以应该不多。
毕竟大部分区间没有fuck数。
huangxy10
2012-10-07
打赏
举报
回复
先做一个预处理,计算出所有的区间的[a,b]的fuck数,
时间复杂度是O(n^2);
每一次查询的时间复杂度是O(1)
只是空间复杂度要求比较高O(n^2),内存不够就放到小文件中,
然后根据a,b计算出在哪个文件中,读出来即可。
DeDeWo
2012-10-07
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
先做一个预处理,计算出所有的区间的[a,b]的fuck数,
时间复杂度是O(n^2);
每一次查询的时间复杂度是O(1)
只是空间复杂度要求比较高O(n^2),内存不够就放到小文件中,
然后根据a,b计算出在哪个文件中,读出来即可。
[/Quote]
用这么暴力的算法能解决的就不会放到这里分享了
DeDeWo
2012-10-07
打赏
举报
回复
放假了,这里没什么人气啊
DeDeWo
2012-10-07
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
你是想达到O(Mlogn)吧,
就是每次查询需要logn次?
[/Quote]
是的,O(Mlog(B-A)), 每次查询需要 log(B-A) ,复杂度比这个多一两个数量级也是可以的。
DeDeWo
2012-10-07
打赏
举报
回复
[Quote=引用 9 楼 的回复:]
你是想达到O(Mlogn)吧,
就是每次查询需要logn次?
[/Quote]
logn 或 nlogn + mlogm 等复杂度是可以接受的 。但不能接受 O(n^2)的算法。
huangxy10
2012-10-07
打赏
举报
回复
你是想达到O(Mlogn)吧,
就是每次查询需要logn次?
DeDeWo
2012-10-07
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
使用ST算法可以做,用DP,
记录每个区间最多出现数字的次数.
[/Quote]
RMQ算法太耗内存,并且并不适用这个题目,这题就如一楼说的,可以直接抽象成,arr[A...B]中,出现次数超过一半的数?
考虑最坏的情况 ,A和B相差很大。
有木有复杂度在 O ( nlogn )级别的算法。
huangxy10
2012-10-07
打赏
举报
回复
使用ST算法可以做,用DP,
记录每个区间最多出现数字的次数.
huangxy10
2012-10-07
打赏
举报
回复
如果要想达到O(1)的查询时间复杂度,那么一定是要把所有的区间的fuck数存起来的。
当然预处理方法的时间复杂度可以使用高效一些的方法来加数,也许可以达到线性也说不定。
可以参考RMQ问题,
查询任意区间最大最小值问题。
很类似。
DeDeWo
2012-10-06
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
是否可以直接抽象成,arr[A...B]中,出现次数超过一半的数?
如果可以,那只要遍历一次从arr[A] 到 arr[B],时间复杂度为O(n)
方法参考:http://blog.yidooo.net/archives/3426.html
[/Quote]
这种解法只适合询问一个区间,如果有多次询问是不是都要遍历一次?显然这样复杂度高的不靠谱。
核动力蜗牛Killua
2012-10-06
打赏
举报
回复
是否可以直接抽象成,arr[A...B]中,出现次数超过一半的数?
如果可以,那只要遍历一次从arr[A] 到 arr[B],时间复杂度为O(n)
方法参考:
http://blog.yidooo.net/archives/3426.html
微软等数据结构+算法面试100题全部答案集锦
面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试
题目
,最终成就了
一个
名为:结构之法 算法之道的编程面试与算法研究并重的博客,如今,此博客影响力逐步渗透到海外,及至到整个互联网。 在此之前,...
算法竞赛入门经典(第二版) UVa原题 PDF版
算法竞赛入门经典(第二版)的习题都是UVa上的, 但是UVa太慢了太慢了太慢了太慢了太慢了, 于是我把各章习题的pdf一次性打包下载到本地, 和大家
分享
:)
51单片机输出方波问题
今天
分享
一个
题目
,有关51单片机输出方波的问题,好了,进入正题 二:
题目
已知8051单片机的时钟频率为6MHZ,通过定时器1的工作方式1在P1^1引脚输出
一个
1KHZ占空比为60%的矩形波。 三:分析
题目
1、首先第
一个
条件,...
java android毕业设计
题目
,
一个
基于android的优秀毕业设计
分享
一个
基于android的优秀毕业设计
分享
1、课程管理【系统端】:课程信息管理,(授课老师,课程名称,授课对象,授课时间(哪几周,哪几节课),比如4~16周,周三(5,6节))2、知识点管理【系统端】:知识点管理。...
百度面试题 --- 锦标赛排序
先
分享
一个
题目
吧: 给出
一个
长度是N的数组,现在要找出最大的两个元素,最少要多少次比较。 分析: 如果找出1个最大的,比较次数无疑是 n - 1, 现在如果已经找出最大的了,那么再找第二大的,如果用竞赛...
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章