poj1226,poj3080
    
                
摘要:看来以后用pascal的函数要小心了; 简简单单pos其实时间复杂度是二次方级的…… 今天学习的是KMP——字符匹配算法; 这两道题也都很简单,都是为这个算法练手的, 最朴素的匹配显然是穷举起始位置然后看是否匹配,复杂度O(nm)不尽人意 kmp的思想就是尽可能利用之前匹配的信息进行匹配。 具体分析
        
阅读全文
                    posted @ 
2013-12-25 21:13 
acphile
        
阅读(169) 
         
        推荐(0)     
                 
                
                
    poj3666
    
                
摘要:一道不错的dp题 就是最小修改代价,使序列变为一个非下降序或非上升(由于数据较弱直接求非下降即可,当然非上升非下降本质是一样的) 观察可得到,修改后得到的数列中的元素最后一定都在原序列中; 由此我们可以将原数列排序离散化; 在dp[i,j]表示新序列到第i个元素修改成原序列第j小的数所用的代价 易得
        
阅读全文
                    posted @ 
2013-12-20 23:36 
acphile
        
阅读(223) 
         
        推荐(0)     
                 
                
                
    poj3067
    
                
摘要:求交点的个数; 容易发现,对于两条航线(xi,yi)和(xj,yj),设xi<xj 只有yi>yj时两条航线存在交点; 于是我们考虑以x为第一关键字减序,y为第二关键字为减序排序; 则对于当前航线(xi,yi),只要找之前所有yj小于yi的个数 所有交点数就是其总和,统计就要用到飘逸的树状数组了~ 
        
阅读全文
                    posted @ 
2013-12-20 23:04 
acphile
        
阅读(132) 
         
        推荐(0)     
                 
                
                
    poj12月其他题解(未完)
    
                
摘要:最近编程的时间比较少啊…… poj3253 就是个合并果子,各种优先队列即可(显然单调队列最优) poj3263 线段树统计每个点被覆盖了多少次即可,注意要去重 poj3625 最小生成树 poj3626 bfs poj3624 01背包 poj3615 floyd即可 poj3278 简单bfs
        
阅读全文
                    posted @ 
2013-12-20 22:22 
acphile
        
阅读(126) 
         
        推荐(0)     
                 
                
                
    poj1823,3667
    
                
摘要:又来练线段树了…… poj1823题意很简单(明显的数据结构题),区间修改和统计最长连续空区间; 有了poj3468的基础,区间修改不是什么问题了,重点是求最长连续空区间;(弱弱的我纠结了好久) 在每个节点上增加3个域,lmax,rmax,maxx,分别表示从左起最长,右起最长,区间内最长,然后稍稍
        
阅读全文
                    posted @ 
2013-12-14 20:05 
acphile
        
阅读(240) 
         
        推荐(0)     
                 
                
                
    poj2352
    
                
摘要:纪念树状数组初步(……); 这题已经给了y升序,y相同时x升序,(yeah) 所以容易想到O(n^2)的模拟算法; 其实分析一下就是对于当前xi,统计之前有多少个小于等于xi(因为已经保证了没有相同坐标的点) 初学者(比如我),一开始感觉和树状数组没毛关系,但是…… 仔细想想发现,树状数组是修改和区
        
阅读全文
                    posted @ 
2013-12-08 22:44 
acphile
        
阅读(124) 
         
        推荐(0)     
                 
                
                
    poj3671
    
                
摘要:首先容易想到的是LIS,但是n<=30000,所以肯定要优化; 壮哉单调队列又登场了; 然后再找一个最长不上升序列并求两者最大值即可,复杂度O(n logn); 应该说这是解题通法了,但再回头看题目,这道题中,1<=di<=3这个条件没有用 于是很容易想到,还是以最长不下降序列为例: 明显序列结尾元
        
阅读全文
                    posted @ 
2013-12-06 23:25 
acphile
        
阅读(140) 
         
        推荐(0)     
                 
                
                
    poj2823
    
                
摘要:这是一道题意简单,数据较大的题(喜闻乐见); 一开始可能会想到RMQ问题,ST,线段树都是O(nlogn),应该勉强能过(没试过); 由于这道题区间是滚动连续的,所以,可以使用单调队列! 以最小值为例: 对于a[i],a[j],i>j; 如果a[i]<a[j],那么在加入i到滚动窗口中,找最小值一定
        
阅读全文
                    posted @ 
2013-12-05 20:34 
acphile
        
阅读(137) 
         
        推荐(0)     
                 
                
                
    12月上旬poj其他题
    
                
摘要: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)     
                 
                
                
    poj2229
    
                
摘要:很不错的一道题,这里提供两种方法: 方法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
        
阅读(180) 
         
        推荐(0)