- 博客(10)
- 收藏
- 关注
原创 SPOJ COT2 树上的莫队算法,树上区间查询
题意:n个节点形成的一棵树。每个节点有一个值。m次查询,求出(u,v)路径上出现了多少个不同的数。树上的莫队算法,同样将树分成siz=sqrt(n)块,然后离线操作。先对树dfs一遍,每当子树节点个数num>=siz,就将这num个分成一块。读取所有的查询按左端点所在块排序。重点在于怎么进行区间转移,对路径的lca特殊处理,参考博客http://blog.csdn.net/kuribohg
2015-08-17 19:09:00 2146
原创 hdu 5381 莫队算法/gcd
The sum of gcdTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 645 Accepted Submission(s): 279Problem DescriptionYou have an array
2015-08-17 18:55:41 957
原创 主席树(可持久化线段树)入门专题
1.poj 2104 查询区间第k小。主席树其实相当于建立了n棵线段树,第i棵线段树是根据区间【1,i】按值建立的。对于每一棵线段树我们记录它对应的区间每个数出现的次数,所以首先要对所有的数离散化。先考虑最简单的情况,只查询【1,n】的第k小,对于【1,n】我们按值建立一棵线段树,对于a[i]我们在位置a[i]上加1。查询第k小那么先看左子区间出现了多少个数cnt,假设左区间出现的数cnt
2015-08-16 18:34:52 6002
原创 zoj 2112 Dynamic Rankings 带修改区间第k大的几种解法
给出n个数,有两种操作,一种是修改某个数的值,另一种查询指定区间第k大。比较快的做法是树套树,而分块算法复杂度比较高写起来方便。分块算法可以很简单的处理单独修改某个值的情况。将n个数分成num块,每块大小siz=n/num。每一块内部排序进行排序,查询[l,r]第k大时,先二分答案,对于完全包含在区间的内块直接二分搜索,而对于区间两端只有部分包含的则直接遍历查找。复杂度是logn*(2*s
2015-08-16 12:28:18 3743 2
原创 cf-546E 网络流,状态转移平衡
E. Soldier and Travelingtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputIn the country there are n cities a
2015-08-15 16:44:20 702
原创 hdu 3998 最长上升子序列个数+网络流 (最多不相交合法路径数)
SequenceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1886 Accepted Submission(s): 687Problem DescriptionThere is a sequenc
2015-08-12 22:37:40 967
原创 hdu 3416 最短路+网络流(不重叠最短路径计数)
Marriage Match IVTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2594 Accepted Submission(s): 772Problem DescriptionDo not si
2015-08-12 22:11:57 824
原创 hdu 3338 网络流填数字
Kakuro ExtensionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1268 Accepted Submission(s): 439Special JudgeProblem DescriptionI
2015-08-10 14:55:28 1507
原创 poj 1741 树分治入门
题意:统计距离这道题用的树的点分治方法。点分治基于树的重心。树的重心,定义是删除某个点后得到的最大(节点数)子树的节点数最小。性质是,可以证明删除掉重心后,每个子树的大小
2015-08-03 23:20:45 575
原创 hdu 5324 树套树、cdq分治
一、线段树/树状数组套平衡树题目大意是给你n个(L[i], R[i])的点,找出最长的子序列,满足L[i]递减,R[i]递增。为了看起来顺眼点,我们可以把其中一维取相反数,使得两个都找递减,或者都找递增的。我们把L[i]取相反数,找两个都递增的。假设不考虑R[i],只考虑L[i],那么就相当于LIS问题了。dp[i]记录以L[i]为结尾的最大长度,dp[i]=max{dp[
2015-08-02 11:33:53 663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人