摘要: 前言:关于区间最值问题的求解,我们一般采用线段树来维护区间最值,得到了O(NlogN)的算法。但对于区间第k值问题,我们应该如何解决呢?本文将介绍一种基于线段树思想衍生出来的新结构——划分树,来解决这个问题。1 划分树 其实,划分树和线段树的区别并不大,可以归纳为两点: 1.1 划分树每一个区间[L,R]维护的是一个一维数组[L..R]。 1.2 划分树每一个根结点[L,R]中前[(R-L+1)/2]小的点组成左子树,后[(R-L+1)/2]大的点组成右子树。2 划分树求区间k值 我们首先修改一下思考方式,原问题变成在已经sorted的数列中找出第k个在区间[s,t]中的数字。 先给... 阅读全文
posted @ 2013-01-03 12:37 yefeng1627 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 维基百科介绍:http://en.wikipedia.org/wiki/Kdtree KD树是一种能在 O(N)时间内把平面划分成若干个区域,然后在均摊 O(logN)的时间内找到某个区域内所有点的数据结构。其思想是,每次把当前处理的区域按照点数分成两部分,然后对两部分进行递归处理。。。分成两部分有两种策略: 一种是横着竖着横着竖着交替划分。。 一种是把坐标跨度大的那一维划分成两部分。似乎没什么影响。上图是一种可行的划分方式。每次找到当前处理点集中的中点,以这个中点为分界线把区间划分成两部分和。注意中点是作为分界线不参与下一轮处理。查询一个点的最近点时,首先令最近距离为,然后在KD树中查... 阅读全文
posted @ 2013-01-03 12:25 yefeng1627 阅读(823) 评论(0) 推荐(0) 编辑
摘要: 题目来源IDOriginTitleProblem AHDU 4407SumProblem BPOJ 1845SumdivProblem CPOJ 2480Longge's problemProblem DPOJ 1012JosephProblem EPOJ 1082Calendar GameProblem FPOJ 1099Square IceProblem A 将题目转换下, 我们 定义函数 Sum ( 1, N ) 为 区间[ 1, N ] 与 P 互质的数的和 则 Sum( 1, Y ) - Sum( 1, X-1) 即为 区间 [ X, Y ] 与 P 互质的数的和 再回到本题 阅读全文
posted @ 2013-01-02 22:42 yefeng1627 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数直接计算公式 欧拉函数的定义: E(N)= ( 区间[1,N-1] 中与 N 互质的整数个数). 对于 积性函数 F(X*Y),当且仅当 GCD(X,Y)= 1 时, F(X*Y) = F(X)* F(Y) 任意整数可因式分解为如下形式: 其中( p1, p2 ... pk 为质数, ei 为次数 ) 所以 因为 欧拉函数 E(X)为积性函数, 所以 对于 , 我们知道 因为pi 为质数,所以 [ 1, pi-1 ] 区间的数都与 pi 互质 对于 区间[ 1, ] ,共有个数, 因为只有一个质因子, 所以与约数大于1 的必定包含 质因子 ... 阅读全文
posted @ 2013-01-02 21:58 yefeng1627 阅读(4329) 评论(0) 推荐(2) 编辑
摘要: 问题:模线性同余方程组: x = a1 ( mod n1 ) x = a2 ( mod n2 ) .... x = ak ( mod nk )给定 A ( a1, a2 , ... , ak ) , N ( n1, n2, ..., nk ) 求 X 。通常分为两种 一, ( Ni, Nj ) 之间两两互质 二, ( Ni, Nj ) 之间不都互质一 ( Ni, Nj ) 之间两两互质 定理( 见算法导论 P874 ): 如果 n1, n2 , ... , nk 两两互质, n = n1*n2*..*nk ,则对任意整数 a1,a2,a3..,ak , 方程组 x =... 阅读全文
posted @ 2012-12-31 22:26 yefeng1627 阅读(2124) 评论(1) 推荐(1) 编辑
摘要: 没看到题目上说 仅一个循环因子.. 现在我还是没看到.....WA了好久, 一直用 置换群分解循环因子后,对每一个循环因子 其 阶数即为循环节. 之后无限WA..找了好久.才发现. 这里的置换, 每一次 double shuffer 后. 其循环因子顺序已经改变了. 我们使用循环因子的顺序是相对于最初的情况而言.所以这里不能够用循环因子来做.模拟其置换过程,找出其 置换循环 D, 对于置换X经过S次置换后得到Y, 则 Y再经过 D-S%D 次置换后又回到 X.View Code #include<stdio.h>#include<stdlib.h>#include< 阅读全文
posted @ 2012-12-31 11:15 yefeng1627 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 对于每个 Block 求出其 循环因子,我这里是用 Vector 动态数组,省事 循环因子顾名思义就是置换会出现循环. 这样把时间复杂度降下来. 因为串总长才 200 , 分别处理每一个循环因子. 可以选择一个一个移动模拟, 也可以一次到位. 我都试了下,都是700+Ms. 虽然区别不大, 估计是数据问题吧. 数据量大了肯定影响很大.View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#i 阅读全文
posted @ 2012-12-30 15:40 yefeng1627 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 总共共10^5个数,取值在10^6之内 离散化后与下标形成映射,转换成置换群 然后就可以形成: 有 n = 10^5 个位置, 每个位置有一头编号为 a[i] (取值范围为[1,n] ) 的牛, 其愤怒值为 dep[ a[i] ] 对于置换群求出其循环因子后. 因为置换的权值花费为 dep[i], dep[j] 所以我们取最小的 dep, 例如循环因子 ( 1 , 4, 7, 8 ) 需要三次置换 , 我们可以取最小的 1, 其愤怒值为 dep[1] ( 我们按权值递增离散化过) 所以三次置换分别为 ( 1, 4 ) ( 1, 7 ) ( 1, 8 ) 则三次花费为 ( de... 阅读全文
posted @ 2012-12-30 12:52 yefeng1627 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目来源 HDU 2008-10 Programming ContestIDOriginTitleProblem AHDU 2520我是菜鸟,我怕谁Problem BHDU 2521反素数Problem CHDU 2522A simple problemProblem DHDU 2523SORT AGAINProblem EHDU 2524矩形A + BProblem FHDU 2525Clone WarsProblem GHDU 2526浪漫手机Problem HHDU 2527Safe Or UnsafeProblem A 仔细读题, 这个不是匀变速运动, 每一秒初,速度直接改变. 化简. 阅读全文
posted @ 2012-12-29 21:59 yefeng1627 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 对于方程 输入 k ( 0 <= k <= 20 ) 输出 解题思路: 由数学 伯努利数 公式: 带入通分化简就可以了,不过要注意,分母为正...( WA了一小时错在了这里 ) 伯努利数是18世纪瑞士数学家雅各布·伯努利引入的一个数。 设伯努利数为B(n),它的定义为: t/(e^t-1)=∑[B(n)*(t^n)/(n!)](n:0->;∞) 这里|t|<2。由计算知: B(0)=1,B⑴=-1/2, B⑵=1/6,B⑶=0, B⑷=-1/30,B⑸=0, B⑹=1/42,B⑺=0, B⑻=-1/30,B⑼=0), B⑽=5/66,B⑾=0, . 阅读全文
posted @ 2012-12-27 17:17 yefeng1627 阅读(402) 评论(0) 推荐(0) 编辑

Launch CodeCogs Equation Editor