![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
文章平均质量分 82
sunny606
这个作者很懒,什么都没留下…
展开
-
线段树_POJ2528_解题报告
题意:给定一些海报,可能互相重叠,告诉你每个海报宽度(高度都一样)和先后叠放次序,问没有被完全盖住的海报有多少张。海报最多10,000张,但是墙有10,000,000块瓷砖长。海报端点不会落在瓷砖中间。 题解:这是一个区间覆盖的问题,由于海报的数量最大有10,000张,O(n^2)的暴力算法是达不到时限要求的,用O(nlgn)的线段树来做应该时间上不会有问题了,但是 直接做线段树会超内存,原创 2012-03-27 13:03:38 · 599 阅读 · 0 评论 -
dancing links详解
Dancing links是一种能高效实现Knuth的X算法的技术,它可以使很多搜索问题得到极大的优化。 假设x是一个双向链表中的一个节点,L[x]表示X的前驱,R[x]表示x的后继, 则R[L[x]] = R[x], L[R[x]] = L[x]这一操作可以把x从链表中移除,这是众所周知的, 当然,一个细致的程序员还会用 L[x] = R[x] = x或 L[x] = R[x] = NUL原创 2012-08-06 00:36:45 · 8206 阅读 · 0 评论 -
线段树和单调队列优化DP---POJ2373解题报告
在长为L(的草地(可看成线段)上装喷水头,喷射是以这个喷水头为中心,喷水头的喷洒半径是可调节的, 调节范围为[a,b]。要求草地的每个点被且只被一个喷水头覆盖,并且有些连续区间必须被某一个喷水头覆盖, 而不能由多个喷头分段完全覆盖,求喷水头的最小数目。 很容易想到,这可以用dp解决,定义dp[i]为覆盖[0,i]区间所需的的最小喷头数, 则dp[0]=0,dp[i]=min{dp[i-2*原创 2012-08-11 12:14:50 · 2036 阅读 · 0 评论 -
中位数优先容器
要求编写一个容器,它可支持两种操作:push()和pop(),push(K)操作可将元素K放入容器,pop()操作可将容器中的中位值弹出。 例如:push(1),push(2),push(3)后pop()[输出为2]。 解决方法,创建一个最大值优先的优先队列,将其记为左队列ql,创建一个最小值优先的优先队列,将其记为右队列qr, 我们规定ql不为空时,ql.top()为中位值,记为mid原创 2012-08-18 11:37:09 · 1477 阅读 · 0 评论 -
那些年我们写过的三重循环----CodeForces 295B Greg and Graph 重温Floyd算法
这个问题让我们再一次想起Floyd算法三重for循环背后的光芒。原创 2013-07-23 13:10:59 · 1872 阅读 · 1 评论