随笔分类 -  树状数组

摘要:MooFest分析:20000的数据规模,暴力肯定是要超时。直观的是要求和,为了减少求和的次数,考虑运用树状数组。发现,可以先按音量排序,然后只需要求距离,用树状数组可以很好的解决。心得:abs()函数使用失败!原因:不支持64int。代码数据 阅读全文
posted @ 2010-08-13 20:59 superbin 阅读(490) 评论(0) 推荐(0)
摘要:题型:求逆序数,(用树状数组+离散化)心得:很悲剧,TLE AT #31 N 次,原因出在qsort(),(难怪发现不了),后来改sort(),就过了。看来qsort()的效率还有待分析!代码 阅读全文
posted @ 2010-08-10 17:14 superbin 阅读(473) 评论(1) 推荐(0)
摘要:PKU-2352 Stars描述:求每个星星左下方的星星数坐标先按y从小到大排序,y相等x按从小到大排序。c[i]表示x=i位置的星星数。PKU-2481 Cows描述:每个cow吃草的范围是f=[s,t],如果区间f1严格包含区间f2,则cow1比cow2强。思路:同pku-2352,cow即是星星,范围即是对应的坐标,不过还需要转化一下,将cows对应到二维坐标上之后,将坐标系逆时针转90&d... 阅读全文
posted @ 2010-08-02 14:32 superbin 阅读(427) 评论(0) 推荐(0)
摘要:Ultra-QuickSort题型:求逆序数解法一:正统做法,归并排序,375MS。[代码]解法二:树状数组,需要先离散化,因为用到qsort(),比归并排序稍慢,516MS。[代码] 阅读全文
posted @ 2010-07-31 17:09 superbin 阅读(324) 评论(0) 推荐(0)
摘要:Counting the algorithms题型:树状数组描述:N个数,1~N,每个数出现两次,即有2N个数的无序序列,每次找两个相同的从数列中删除,得到位置差,直到都删除。求位置差的和的最大值。思路:比如一个序列1 2 3 2 3 4 4 1,1,1 和 2,2是包含关系,2,2和3,3是相交关系,3,3和4,4是相离关系。易知,只有包含关系会影响最后的和,所以应从外至内的删除。树状数组心得:... 阅读全文
posted @ 2010-07-22 11:58 superbin 阅读(244) 评论(0) 推荐(0)
摘要:经理的烦恼题型:树状数组描述:1.一列数,第k个数加上x,2.询问[a,b]区间内是素数的个数。思路:树状数组解决,f[]保存数的值,tree[]保存结点,操作一进行 update(),操作二进行sum();心得:此题死在了判素数上,0,1没有处理。关于树状数组更深的一点理解:[1].每个idx控制的范围是range = idx&(-idx). 即:idx - range+1~idx[2]... 阅读全文
posted @ 2010-07-20 09:15 superbin 阅读(311) 评论(0) 推荐(0)