摘要: 求交点的个数; 容易发现,对于两条航线(xi,yi)和(xj,yj),设xi<xj 只有yi>yj时两条航线存在交点; 于是我们考虑以x为第一关键字减序,y为第二关键字为减序排序; 则对于当前航线(xi,yi),只要找之前所有yj小于yi的个数 所有交点数就是其总和,统计就要用到飘逸的树状数组了~ 阅读全文
posted @ 2013-12-20 23:04 acphile 阅读(131) 评论(0) 推荐(0)
摘要: 最近编程的时间比较少啊…… poj3253 就是个合并果子,各种优先队列即可(显然单调队列最优) poj3263 线段树统计每个点被覆盖了多少次即可,注意要去重 poj3625 最小生成树 poj3626 bfs poj3624 01背包 poj3615 floyd即可 poj3278 简单bfs 阅读全文
posted @ 2013-12-20 22:22 acphile 阅读(126) 评论(0) 推荐(0)
摘要: 又来练线段树了…… poj1823题意很简单(明显的数据结构题),区间修改和统计最长连续空区间; 有了poj3468的基础,区间修改不是什么问题了,重点是求最长连续空区间;(弱弱的我纠结了好久) 在每个节点上增加3个域,lmax,rmax,maxx,分别表示从左起最长,右起最长,区间内最长,然后稍稍 阅读全文
posted @ 2013-12-14 20:05 acphile 阅读(239) 评论(0) 推荐(0)
摘要: 纪念树状数组初步(……); 这题已经给了y升序,y相同时x升序,(yeah) 所以容易想到O(n^2)的模拟算法; 其实分析一下就是对于当前xi,统计之前有多少个小于等于xi(因为已经保证了没有相同坐标的点) 初学者(比如我),一开始感觉和树状数组没毛关系,但是…… 仔细想想发现,树状数组是修改和区 阅读全文
posted @ 2013-12-08 22:44 acphile 阅读(123) 评论(0) 推荐(0)
摘要: 首先容易想到的是LIS,但是n<=30000,所以肯定要优化; 壮哉单调队列又登场了; 然后再找一个最长不上升序列并求两者最大值即可,复杂度O(n logn); 应该说这是解题通法了,但再回头看题目,这道题中,1<=di<=3这个条件没有用 于是很容易想到,还是以最长不下降序列为例: 明显序列结尾元 阅读全文
posted @ 2013-12-06 23:25 acphile 阅读(140) 评论(0) 推荐(0)
摘要: 这是一道题意简单,数据较大的题(喜闻乐见); 一开始可能会想到RMQ问题,ST,线段树都是O(nlogn),应该勉强能过(没试过); 由于这道题区间是滚动连续的,所以,可以使用单调队列! 以最小值为例: 对于a[i],a[j],i>j; 如果a[i]<a[j],那么在加入i到滚动窗口中,找最小值一定 阅读全文
posted @ 2013-12-05 20:34 acphile 阅读(134) 评论(0) 推荐(0)
摘要: poj3170 1,4两遍bfs; poj3171 改一改poj2376即可 poj3172 dfs+剪枝 其实增长速度很快,n<=40,题目吓你的; poj3661 比较经典的dp:设f[i,j]为到第i分钟,耗了j精力最长能跑多远; f[i,j]=f[i-1,j-1]+d[i] (j>0); f 阅读全文
posted @ 2013-12-05 12:56 acphile 阅读(94) 评论(0) 推荐(0)
摘要: 很不错的一道题,这里提供两种方法: 方法1:递推; 易知当n为奇数时,f[n]=f[n-1] (n-1的所有方案前面添1,并且没有新的方案); 重点是n为偶数的时候,则拆分方案中,要么有偶数个1,要么有没1; 当有偶数个1时,就相当于在n-1(奇数)的方案中添一个1,(每个奇数分解方案一定有奇数个1 阅读全文
posted @ 2013-12-05 12:48 acphile 阅读(179) 评论(0) 推荐(0)
摘要: 比较简单的树形dp; 定义s[i]为节点i的子树节点数和(包括自身);叶子节点s[j]=1; s[i]=signma(s[k])+1 (k是i的孩子) 则i满足的条件是 1.s[k]<=n div 2 (k为所有孩子节点) 2.n-s[k]<=n div 2; 由于n比较大,可以考虑用前向星来存储, 阅读全文
posted @ 2013-11-30 16:37 acphile 阅读(124) 评论(0) 推荐(0)
摘要: 最少区间覆盖问题; 首先我们想到将r排序,则以得出dp方程 f[i]=1 (l[i]=1) =min{f[j]}+1 (r[j]+1>=l[i]) 最后ans是min{f[j]} (r[j]>=t); 很显然O(n^2),会超时; 考虑到r已经升序排列,对于一个f[i],如果f[i]<f[j] (i 阅读全文
posted @ 2013-11-30 16:18 acphile 阅读(162) 评论(0) 推荐(0)