上一页 1 ··· 8 9 10 11 12 13 14 下一页
摘要: 1、以迅雷不及掩耳的速度秒杀题目的意思(不推崇一句话一句话的翻译着读:那太龟速~)2、通过验证案例验证理解题目意思上有没有偏差3、构思算法,首推暴力,检验时间复杂度和空间复杂度4、草稿纸上写下代码的结构 阅读全文
posted @ 2013-04-18 10:55 小仪在努力~ 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 参照了http://blog.csdn.net/v_july_v/article/details/7041827大神的总结一、KMP的作用:匹配原始串和模式串,在原始串中找到最早出现模式串的坐标并返回之,如果没有找到返回-1二、KMP的思想:对模式串搜索重复的子串,列出next[]数组,根据next[]数组在原始串和模式串匹配过程中移动模式串而非回溯原始串三、KMP的时间复制度O(n+m),n为原始串的长度,m为模式串的长度四、KMP的两个模板(两种写法的next[]数组是不同滴):1、正规写法/*其实在KMP匹配过程中,当发生两个串中字符比较不等时指针 i 不需要回溯,而只要将 T 串向右滑 阅读全文
posted @ 2013-04-18 10:32 小仪在努力~ 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 忐忑了一晚,只因为自己真的很无能。进步速度太慢了,连12级的都比不过。又一次功利性的忘记了我爱算法的本质,爱在学习的过程中思考学习方法的初始。现在的心情仍然无法平复,每查自己的水平一次,就越发觉得站不住脚。我曾经很脆弱的想放弃,也从不相信自己的能力,但是又是谁在鼓励我呢?因为你的一句加油,我努力到了现在...也许我的性格依然很懦弱,然而我告诉自己,我不能放弃,因为ACM给我的意义非凡,它让我开始思考学习的方法,做事情的方法,还有找回了我失落的自尊。我知道,我从来都不是最好的,但是我已经在尽自己最大的努力。^ ^蔼蔼加油! 阅读全文
posted @ 2013-04-18 09:37 小仪在努力~ 阅读(185) 评论(5) 推荐(1) 编辑
摘要: 我滴头啊~晕啊晕。这题终于让我把数位DP的本质看清楚了。http://acm.fzu.edu.cn/problem.php?pid=2109题目Problem DescriptionOne integer number x is called "Mountain Number" if:(1) x>0 and x is an integer;(2) Assume x=a[0]a[1]...a[len-2]a[len-1](0≤a[i]≤9, a[0] is positive). Any a[2i+1] is larger or equal to a[2i] and a[ 阅读全文
posted @ 2013-04-17 21:44 小仪在努力~ 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 题目描述在一条河的一侧,分布着 N 个村庄。这些村庄平日里需要一些贸易往来,然而商人们来回走遍每一座村庄是非常辛苦的,于是他们决定每个月都在河边举行一次集会,大家都来集会上购买需要的物品。然而在集会地点的选择上,大家却有分歧,因为谁都不愿意集会的地点离自己村庄非常远。经过一番激烈的讨论之后,大家决定要将集会地点挑选在这样一个位置:它离最远的村庄的距离要尽可能的近。我们把河看做一条足够长的直线,河岸就是平面坐标系上 y = 0 的这条线,y < 0 的区域是河水,而所有村庄都在 y ≥ 0 的区域里。现在给出所有村庄的平面坐标,你要在河岸上找到这样一个位置,使得它到所有村庄的最远距离最小。 阅读全文
posted @ 2013-04-16 12:28 小仪在努力~ 阅读(472) 评论(4) 推荐(0) 编辑
摘要: 二分的思想:假设数列是一堆有序的序列,题目要求我们求某个数是否在序列中,则每次把区间拆分成一半,在其中一半中寻找,遍历时间为O(logn)。有时候,用二分的题目并非是单调递增的,则需要二重判断合法性,也就是说找到符合的数时,看看前面时候还有数也符合,如果还有则证明这个不是最优解,继续追溯下去,如http://codeforces.com/problemset/problem/287/B模板:int a[555];int bsearch(int key,int l,int r){ int mid; while(l<=r) { mid=(l+r)>>1; ... 阅读全文
posted @ 2013-04-15 20:27 小仪在努力~ 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 假如给你一个32bit的数,要你判断它是不是素数,只需要计算出16bit包含的素数能否被它整除就可以了,能整除的绝对不是素数。素数分布的猜想:1——n,n趋向于无穷大,素数分布从稠密到稀疏。模板如下:#include<cstdio>template <int MAX> class PrimeTable { bool isp[MAX+1];public: PrimeTable() { int i,j,k; for (int i = 0; i <= MAX; ++i) isp[i] = true; isp[0] = isp[1] = false... 阅读全文
posted @ 2013-04-14 20:47 小仪在努力~ 阅读(135) 评论(0) 推荐(0) 编辑
摘要: dfs有别于BFS:一条路走到底,所以对于大数据的题目,剪枝对dfs来说十分关键。写dfs的步骤:1、思考参数们代表的状态2、思考递归出口3、思考如何剪枝4、思考如何进入下一状态模板:const int MAXN=100bool vis[MAXN],compress[10<<1];//compress,状态压缩int wan[MAXN][MAXN];void dfs(/*参数们*/){ if(/*递归出口条件*/) { //do sth return; } for(int i=1;i<=N;++i) //递归入口 { ... 阅读全文
posted @ 2013-04-14 12:09 小仪在努力~ 阅读(154) 评论(0) 推荐(0) 编辑
摘要: BFS:找到的路径长度一定是起点到终点的最短路径构思BFS的步骤:1、确定队列结构体要记录什么东西,一般为x,y坐标,累加的路径长度r2、确定入队条件3、确定终结条件模板:int map[M][M],wan[M][M]; //map是图;wan是弯的数量,主要用来剪枝int go[4][2]= {{-1,0},{1,0},{0,-1},{0,1}}; //go表示走上、下、左、右方向struct node{ int x,y,turn,road; node() {} node(int a,int b,int c,int d) //构造函数 { x=a; ... 阅读全文
posted @ 2013-04-13 20:36 小仪在努力~ 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 数位DP=区间求符合条件的数的个数的算法=数很大,无法直接暴力的算法≈让人苦恼愤怒,依然D不出来的勾魂算法数位DP的两种写法:1、递推结构:init()函数,根据递推数位的公式求得的满足某长度的符合数的个数cal()函数,假设要计算的数字为n,数位长度为len。1到len-1长度累加,len长度的拿出来一个位置一个位置遍历判定再累加。输出cal(right+1)-cal(left),right为区间最右,left为区间最左模板:int f[35][35],digit[35];void Init(){ int i,j; /*递推关系式,请忽略 f[0][0]=1; for... 阅读全文
posted @ 2013-04-11 20:51 小仪在努力~ 阅读(371) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 下一页