ACM•Spoj
文章平均质量分 82
kksleric
这个作者很懒,什么都没留下…
展开
-
SPOJ/GSS3:Can you answer these queries III(线段树)
http://www.spoj.pl/problems/GSS3/ 题意:给出一个数列,求某个区间内的最大子序列和,并进行对某些点的更新。GSS1是个不更新只查询的简化版题目,差别不大。 跟hdu3397有点像,统计量也很像,但是犯了经验主义的错误,左起最大字段和=左区间左起最大字段和 或 左区间和+右区间左起最大字段和(如果左区间左起最大字段和==左区间和)是错误的,例如:100 -1原创 2012-03-30 16:46:49 · 729 阅读 · 0 评论 -
扩展Tarjan求解树上两点路径上的最长边(高效求解次小生成树)
SPOJ 3978 Distance Query 题意:给出一棵有边权的树(100000个点),有100000次讯问两点间路径上的最长边和最短边。 扩展Tarjan算法可以离线解决LCA问题(http://blog.csdn.net/kksleric/article/details/7442258)因此也可用于维护两点间路径上的性质。 设mx[i]为i点到当前集合根节点(tarjan过程中并原创 2012-08-03 15:53:32 · 2177 阅读 · 0 评论 -
spoj 3196 Divisibility Relation(最大独立集输出方案)
题意:给出200个数,选出最大的子集,使得子集中的数相互不整除。 解法:将可以整除的点连边,看上去像是个无向图最大独立集,通过求最大团的办法求解复杂度hold不住。于是观察图的特点,由于整除是一种偏序关系,因此构成的是一个有向无环图,因此也是个二分图(二分图的一个充分必要条件是无奇圈),于是可以转化为求解二分图的最大独立集。具体做法Matrix67给出了证明过程,这篇文章里有http://blo原创 2012-09-04 20:49:13 · 1090 阅读 · 1 评论 -
spoj 861 SWAPS & uva 11990 "Dynamic'' Inversion(动态维护逆序对)
题意:有150000个数,10000条操作,每次将第i个数变为x,讯问每次操作后逆序对的数目。 解法1:树状数组+treap,树状数组的每个元素都是一棵树,这样可以在lognlogn时间内查询前i项有多少个小于等于k的元素,当某个元素法师改变时,只需从树状数组中对应的treap中进行元素的删减,每次修改前后统计的第i个元素形成的逆序对数,便可知每次操作后逆序对的数目。由于Treap常熟很原创 2012-08-31 16:35:16 · 2146 阅读 · 0 评论