自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiefubao的专栏

业精于勤荒于嬉,行成于思毁于随

  • 博客(218)
  • 收藏
  • 关注

原创 poj(2774)后缀数组法求公共连续…

题目原意:输入两个字符串,求最长的连续公共子串的长度;看了好长时间时间这个题,要用到后缀数组,于是下了个模板基数排序求后缀数组AC的。将两个字符串连接起来(模板里的基数排序求后缀数组要用int型,so将每个字符转换成整形),为了使得出现最长的公共子串在前后两部分里面,所以中间加个不可能出现的值(随意);然后将求最长公共子串(同时要判断的是公共子串的开头是否在两个区域OK了)。#incl

2014-01-16 16:38:48 520

原创 经典RMQ(poj3264)

题意:随机访问任意区间的极值;ST算法:DP预处理复杂度O(nlogn);以后每次询问复杂度为O(1);(F[i,j]表示从i位置开始,往右2^j个元素中的极值。动规方程F[i,j]=max(F[i,j-1],F[i+2^(j-1),j-1]),当i+2^(j-1)大于序列左端时,则F[i,j]=(F[i,j-1];在访问(a,b)区间时,取j使得2^j刚好小于等于(b-a);然后求得max

2014-01-16 16:38:46 502

原创 poj2075并查集加堆实现的克鲁…

原题:DescriptionYou are the owner of SmallCableCo and havepurchased the franchise rights for a small town. Unfortunately, youlack enough funds to start your business properly and are relyingon pa

2014-01-16 16:38:44 548

原创 prim算法(poj1789)

#include#include#includeusing namespace std;char str[2010][8];int dis[2010][2010];int mindis[2010];bool rem[2010];int n;int prim(){    memset(rem,false,sizeofrem);    memset(mindis,8,siz

2014-01-16 16:38:42 572

原创 Frog Distance(poj2253)flo…

题目大意:青蛙要从一个石头(二维坐标点)跳到另外一个石头上,有其他n-2块石头可以作为跳跃的媒介。起码有一条可以跳跃的路线到达,指定石头上。在每条路线上,距离最大的一个跳跃段最为青蛙的跳跃能力底线---FrogDistance,求在所有的路线中最短的那个Frog Distance,并按指定格式输出。解题思路:mindis[i][j]记录着点i与点j之间的Frog Distance。并利用

2014-01-16 16:38:40 663

原创 求一条直线上能包含的最多数量的点

题目大意:给N个二维点的坐标,求在所有点的连线中一条直线所能包含最多的点的个数;2000ms,1000的复杂度刚开始自己想了个N^3复杂度的方法,即使加上了感觉很有效的剪枝,但是依然TLE了。看了网上某ACMer的博客,恍然大悟,原来N^2logN就可以过了;大致思路:枚举每一个点:计算其他所有点和此点连线的斜率,然后将斜率排序。此时,便可以在排好序的斜率中将相等的斜率数量找出来(

2014-01-16 16:38:38 1695

原创 并查集加最小堆实现的Kruskal算法…

容易证明的是,在图的最小生成树中,它的最长边在所有生成树的最长边中也是最短的,所以求所有生成树的最长边的最小值的问题和最小生成树是一个问题。下边是并查集加最小排队实现的Kruskal算法。稍微修改下输入格式,在poj上连过了好几道最小生成树的题目。大致思想:a:不断的找到最小边,判断此边的两点是否已经连通,若连通则不作为并继续在堆上pop(直到pop出的边的两点所属集合不连通),若不连通

2014-01-16 16:38:36 1287

原创 poj1442(最大最小堆)

在输入的M个数中输出第N大的数。组建一个最大最小堆便可。题目本身不是什么难点,记下博文只是怕哪时忘记了如何在priority_queue中重载整数的优先级。#include#include#includeusing namespace std;struct cmp1{    bool operator()(int&a,int &b)    {       return

2014-01-16 16:38:33 797

原创 poj-2479求最大子序列和(双子序列…

be[i]记录着i之前最大的子序列之和;en[i]记录着i之后的子序列之和;这两个都可以通过O(n)的便利得到;然后枚举分界点,总体O(n)解决之。#include#includeusing namespace std;int rem[50030];int be[50030];int en[50030];int main(){    int n;   scanf("%d",

2014-01-16 16:38:31 1111

原创 楼天城之做男人就过八道题(第一题…

关于楼教主的第一题,感觉最费时间的还是高精度的实现。实现一万位以上整数基本运算的万进制高精度模版就写了快一天(题目里用到大概也有几百位吧),只能说太容易出错了,得不断地调试修改。题目源地址是北大poj1737题,题目本身的组合数学的算法是参考某位大牛的文章,在此附上地址http://hi.baidu.com/accplaystation/item/0b3b4e1654a07548e75e06f9

2014-01-16 16:38:27 6258

原创 改进的归并排序算法

归并排序的思想在于divide and conquer。一般的归并排序的时间复杂度为O(nlogn)。由于需要一个附加的同样长度的辅助空间,所以它的空间复杂度为O(n)。在conquer时,笔者尝试将插入排序的思想应用于归并的过程中,从而将归并排序的空间复杂度优化至O(1)。下面是普通归并排序的实现:#include“iostream” using namespace std;

2014-01-16 16:38:25 2838

原创 实现库函数next_permutation()

在输出给定排序码的所有排列时,C++函数库中next_permutation()的函数用起来非常方便。它的功能是找到当前排列按照字典序的下一个更大的排列。有的话,就直接修改为下一个更大的并返回true;如果当前就是最大排列,不作改动并返回false。利用这个函数,在输出所有排列时,只需先把原序列按照字典序从小到大排序,然后一个个找到下个更大排序,直至输出所有排列。 举个例子(其中,nex

2014-01-16 16:38:23 645

原创 堆排序的实现

排序的排序码是随机产生的100个整型。其中函数clearUp()用于将无序的排序码最大堆化。getOrder()用于交换元素时重建最大堆。堆排序的最坏时间复杂度为O(nlogn),属于不稳定排序。#include"iostream"#include"cstdlib"using namespace std;void swap1(int *p1,int *p2){    int a=*

2014-01-16 16:38:21 450

原创 关于将数组长度传入函数的一些探讨

清明时节雨纷纷,似乎又应验这句老话,反正西安是这样的。   由于清明放假,晚上就剩下自己一个人在宿舍了。没有太多不同,最突出的感觉只是多了份宁静和平和。看了些关于万进制高精度的打印资料,突然又联想起了前几天一直思考的关于将数组长度传入函数的问题,总结了一下。   把数组传入函数是个很常见的语言现象。同时将数组长度传入函数,这似乎是个根本算不上问题的问题。但是随着考虑的侧重点的偏移,也许会有

2014-01-16 16:38:09 866

原创 北大POJ题目---青蛙的约会

今天在北大POJ上做到一道题——青蛙的约会,连续研究了数个小时,提交了共有50多次,每次都是以wrong anwser或是Time Limit Exceeded被打了回来。后来没吃晚饭,当看到最后一次显示“Accepted”时,内心的焦躁瞬间舒展开来了。   题目原文:两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直

2014-01-16 16:38:07 7699 2

原创 poj1151

题意: 求矩形的并面积。思路:线段树+离散化+扫描线。代码:#include #include #include #include #include using namespace std;struct node{    int l,r;    node *left,*right;    double len;    int cove

2014-01-16 16:30:48 673

原创 poj2777

题意:n个位置,初始化全部为1号颜色。每次更新一段连续区间的颜色。然后查询输入区间的颜色数量。颜色数量种类在30之内。解法:线段树。每次更新的时候区间能够恰好全部覆盖就停止向下递归(这是最关键的线段树所优化的地方)。然后用状压的办法表示颜色数量(这在类似问题数量n不是很多的情况下使用很方便)。代码:#include #include #include using n

2014-01-16 01:04:08 707

原创 我的第一篇CSDN博客

以前一直尝试在新浪上写博客,但是慢慢发现实在忍受不了新浪博客贴代码后有些符号无法识别的bug。以后就用这个CSDN的账号了。有时间把新浪上的博文搬过来。自己的第一篇CSDN博文,fight!

2014-01-15 19:48:03 739 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除