注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一个蒟蒻的代码回收站

最后一次省选求rp

 
 
 

日志

 
 

bzoj3196【TYVJ1730】二逼平衡树解题报告  

2014-04-22 13:58:00|  分类: bzoj |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

题目链接

真是一道蛋疼的题,从晚上写到第二天下午……这是要一天一题的节奏?!

又:这题是我到现在为止写的最长的程序,7k+……

orz hzw直接用主席树秒此题……只是……爆了两次空间= =,最后卡空间127M+……

=======================扯淡结束============================

这题有很多解法,比如线段树套线段树,线段树套主席树,线段树套平衡树什么的。

鉴于本题标题是平衡树(而且用线段树会出现上面那样奇怪的MLE的问题……)

就写平衡树了。

建树和修改就不说了。

先把区间分段。

对于求k的排名,每一段的小于k的个数相加,再+1输出。

对于求前驱,每一段的k的前驱求出来,取最大值。

后继同理。

求第k大很麻烦,由于平衡树不能直接加减,不能直接在树上走。于是需要二分答案,然后求rank,再判断是小于还是大于。

复杂度是O(nlog^3n)的,求第k大每次是log^3n的。

至于代码里为什么不直接using namespace std,是因为std里似乎有一个rank模板,然后在tyvj上会与自己定义的rank冲突导致ce

贴代码:7k+啊!!!


#include<cstdio>
  评论这张
 
阅读(1)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017