- 博客(15)
- 收藏
- 关注
原创 poj2828
很久没有自己独立做出过题来了,我高兴!=-=、题意比较简单,就是根据条件给定的位置给每个人进行排序,求最后的序列状态。(人就用一个唯一的数字表示)说白了就是用线段树,每个节点保存在这个被维护的区间内有多少个空位置。注意要倒过来处理每组数据,因为后面的数据位置不会随着前面的数据改变了。这样就可以利用线段树的搞高效性进行处理数据,利用相对位置求出这个人在队列里面的最终位置。就是这样,不
2015-08-03 16:53:55 438
原创 Maximum Number Of Divisors
啊啊啊好久没写文章了有木有。。。懒惰是最大的敌人。。。废话少说开始写。今天这个知识点是讲在一个1~N的范围内求它的最小反质数,那么何为反质数呢,百度。。。。对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0现在给一个N,求出不超过N的最大的反素数.比如:输入1000 输出 840思维过程:求[1..N]中约数在大的反素数-->求约数最多
2015-07-31 21:07:20 535
原创 QuickSort(经典快排算法)
快速排序算法其实是蛮重要的,上次面试都用到了,可是我语言表达能力不好说不清了=-=。。。 来我这次一定要解释清楚。 快排其实关键在于构造一个partition操作,那么什么是partition操作呢。 就是把一个数组元素为主元素,让数组以这个元素为基准进行分类,大于它的放一边,小于它的放另一边,其实这样就已经把这个主元素在数组中的位置确定了(算法思想的关键) 然后由于分治不断缩小排序规模直至
2015-06-04 17:15:30 2198
原创 HeapSort(堆排序算法)
其实说白了堆排序就是一种特殊的插入排序,只是运用了树形结构而已,使得两个数时间的比较减少了一半,时间复杂度为(n*lg(n))级别的,而且还是原址排序哟。。。 堆排序的关键是构造几个函数: 1.HeapAdjust(int *a,int i)//调整下标为i的堆的元素在堆中保持堆的性质(即父亲节点永远大于两个儿子节点———最大堆的性质,最小堆相反) 2.BuildHeap(int *a,int
2015-06-04 17:00:41 590
转载 KMP算法
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。 在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向
2015-05-09 21:37:10 310
原创 poj3468
这是我敲的第一道线段树的题目,第一次就让我做这么难的题目还让不让我活了,==。。。泪奔题目的大意就通过一些操作变换,成段更新,问一段的和。线段树操作其实蛮麻烦的额。。。总用有几个1.pushup()将子节点加到父亲节点上去;2.pushdown()将父亲的节点的lazy标记下传到子节点中;3.build()建树;4.modify()成段跟新;5.query()询问一
2015-04-09 19:50:16 320
原创 poj2481
类似于一般的树状数组,就是输出的时候要注意按原来状态输出,(排序后顺序会乱,记得保存原来顺序)而且注意相等时候的特殊情况上代码:#include #include #include #include #define M 100008using namespace std;typedef pair ii;typedef struct cow{ii a;int num; }c
2015-03-31 11:13:00 553
原创 poj2299
本来应该是到很简单的题目的,暴力也可以过的只不过效率差点而已(n方)所以想用树状数组求解,但要注意几个问题,就是 1.树状数组不能为0; 2.要用离散化处理数据。都是要仔细才能发现的不说了上代码#include #include #include #define M 500008using namespace std;int c[M];int n;int lo
2015-03-26 20:27:33 322
原创 poj3067
这是一道树状数组的题,对大神来说是不是很简单呀,可惜我不是=-=。。。。简单说这题就是求逆序数,用树状数组快吧。。上代码(show you the code!!)#include #include #include #include #include #define M 1000005int c[M];int n,m;using namespace std;int l
2015-03-24 21:56:55 619
转载 ACM对拍程序过程
ACM对拍程序过程。。。一、用随机程序生成符合题目的输入数据文件名为in.txt如何产生随机数:http://www.cnblogs.com/lvsi/archive/2011/04/21/2024079.html二、用AC的程序和你的程序分别跑数据in.txtAC程序生成out1.txt 你的程序生成out2.txt在生成输出数据的时候最好把
2015-03-21 11:58:48 892
原创 poj1328
知道是贪心,而且测试数据也对了,就是过不去,哎=-=以后厉害了再想想为什么吧,期待更加厉害的自己\(-_-)/#include #include #include #include #include #include #include #define M 1008using namespace std;int n,d;typedef pair p;p island[M
2015-03-21 11:43:41 377
原创 poj2376
#include #include #include #include #include #define M 30000#include using namespace std;typedef pair p;p itv[M];priority_queue ,greater > que1;priority_queue que2;int main(){ freop
2015-03-20 20:01:52 460
原创 poj3176cow bowling
天天和这些奶牛打交道我也是蛮拼的=-=。。。。。介绍一下题意吧就是奶牛在打保龄球,球只能在相邻的数字之间碰撞,求最后总得分简单的dp,难的也不会做=-=别的不说先上代码。。#include #include #define M 500#include #include // 47MSusing namespace std;int map[M][M];int main(
2015-03-19 18:30:34 388
原创 poj3614
我想说 本来这道题我会做的,可是可是=-=。。。题目大意是在沙滩上给c头奶牛涂防晒霜,它们只能承受一定范围的阳光,大于minspf,小于maxspf,但只有L种防晒霜,每瓶标有可以到达的阳光值和量数,求问最多可以保护多少只奶牛 用优先队列吧,再加贪心算法将满足条件的maxspf加入优先队列,然后选取最小的;#include #include #define M 3
2015-03-18 15:19:35 431
原创 POJ3009 Curling 2.0
dfs,,可是明知道是dfs还是不会做=-=。。。。题目大意,,在一张板上,从s处开始击球,方向仅限于上下左右,球只要撞击到墙壁(用1表示)球就会静止下来,同时墙壁会碎掉,变为0(用0表示空),求问经过最少几次击球能到达g(目标)。 击球的时候要注意几点: 1.球只会撞到墙或到达g点会停下来;
2015-03-17 12:13:01 289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人