ACM
文章平均质量分 61
Leafnode
这个作者很懒,什么都没留下…
展开
-
Sunday算法
(2012-07-14 21:16:23)关于Sunday算法的介绍见百度百科。代码:#include#includeusing namespace std;int sunday(char *text,char *pattern){int temp[256];int *shift=temp;int i;int lP=strlen(pattern);i原创 2014-03-21 21:21:08 · 508 阅读 · 0 评论 -
双端对列(SOJ3636)
SOJ3636:http://cstest.scu.edu.cn/soj/problem.action?id=3636 这道题就是纯粹地利用双端对列。注意:先横向处理再纵向处理。代码:#include#include#includeusing namespace std;int s[1005][1005];int Min[1005][1005];int Ma原创 2014-03-21 19:47:20 · 485 阅读 · 0 评论 -
贪心(SOJ4124)
(2012-07-11 22:22:55)SOJ4124:http://cstest.scu.edu.cn/soj/problem.action?id=4124 贪心。 首先排序,然后扫描到a[i-1]+1等于a[i],则需要从第i+1的位置开始找一个大于a[i]的数a[j],把这个数和a[i]交换,如果找不到则将a[i-1]和a[i]交换。最外层循环条件是存在某个a[i]原创 2014-03-21 22:06:53 · 391 阅读 · 0 评论 -
KMP(SOJ3014)
(2012-07-15 00:03:07)SOJ3014: http://cstest.scu.edu.cn/soj/problem.action?id=3014这道题说是用KMP算法,其实只需要用到输入字符串text的next数组。这道题的算法思想我也是受到数据结构课本上求解next数组的思路所启发。在text数组后加一个"0",int temp=next[len-1],然后temp=n原创 2014-03-21 21:19:25 · 390 阅读 · 0 评论 -
树状数组的应用(SOJ2728)
(2012-7-23 21:19:34)SOJ2728:http://cstest.scu.edu.cn/soj/problem.action?id=2728 题目大意:当两头牛i,j交流的时候,最小声音为max{v[i],v[j]}*它们之间的距离。现在有n头牛,求它们之间两两交流最少的音量和。 解题思路:首先将这n头牛按照v值从小到大排序。这样,排在原创 2014-03-21 20:38:34 · 416 阅读 · 0 评论 -
容斥原理(SOJ3082)
SOJ3082:http://cstest.scu.edu.cn/soj/problem.action?id=3082这道题的题意是说,给出一排长度为n的格子,现在使用m种颜色对n个格子涂色。要求:相邻的格子不同色并且m种颜色都要使用。给出n,m,求涂色的方案数。刚开始我考虑用递推公式来做,但是推不出来而且n的范围是10^9,m的范围是10^3也不能用表来存。后来看了题目分类是容斥原理。原创 2014-03-21 19:24:06 · 581 阅读 · 0 评论 -
线段树+区间压缩映射(离散化)
(2012-07-27 16:12:55)SOJ2249:http://cstest.scu.edu.cn/soj/problem.action?id=2249关于这道题以及线段树的离散化见:http://blog.csdn.net/lyy289065406/article/details/6799170代码:#include#include#include#inclu原创 2014-03-21 20:31:14 · 543 阅读 · 0 评论 -
SOJ3076(map)
(2012-07-15 20:58:23)SOJ3076: http://cstest.scu.edu.cn/soj/problem.action?id=3076这道题官方的算法是Trie树,但是巧妙地使用map还是可以AC滴~代码:#include#include#includeusing namespace std;int main(){ int原创 2014-03-21 21:10:18 · 402 阅读 · 0 评论 -
最大子矩阵和
SOJ 4400:http://acm.scu.edu.cn/soj/problem.action?id=4400.我们都知道最大子段和的求解,是典型的动态规划入门题。最大子矩阵和,将问题拓展到了二维,求解思路是一样的,具体思路可参考博文:http://www.cnblogs.com/fll/archive/2008/05/17/1201543.html.//#include#inc原创 2015-07-25 16:00:06 · 404 阅读 · 0 评论 -
KMP(SOJ2652)
(2012-07-14 02:44:44)SOJ2652:http://cstest.scu.edu.cn/soj/problem.action?id=2652 过的第一道KMP题。 这道题主要是解决输出所有子串的个数而不是像KMP算法里的仅仅输出第一个子串的位置。代码:#include#includeusing namespace std;int ne原创 2014-03-21 22:04:49 · 461 阅读 · 0 评论 -
归并排序求逆序数
(2012-07-21 15:10:02)SOJ 2431: http://cstest.scu.edu.cn/soj/problem.action?id=2431如题,利用归并排序求解逆序数。Code:#includeusing namespace std;int s[10005];int result;void merge(int low,int mid,int原创 2014-03-21 18:54:54 · 451 阅读 · 0 评论 -
线段树(SOJ4122)
SOJ4122:http://cstest.scu.edu.cn/soj/problem.action?id=4122赤裸裸的一道题线段树题,也是最简单的一种情况。自己手敲了一个线段树。#includeusing namespace std;//#define N 10struct node{ int L;//左端点。 int R;//右端点。原创 2014-03-21 19:50:26 · 486 阅读 · 0 评论 -
归并排序
第一次自己动手写归并排序并实现计算逆序数。给出代码:原创 2014-04-09 16:07:49 · 407 阅读 · 0 评论 -
切蛋糕(SOJ1739)
(2013-06-21 13:51:56)SOJ1739:http://cstest.scu.edu.cn/soj/problem.action?id=1739切一个圆柱体的蛋糕,只能垂直或平行底面来切。求切了n刀,最多可以切成多少块。这道题是一道动态规划题。我们将垂直底面切蛋糕称为竖切,平行底面切蛋糕称为横切。如果已有竖切x刀,横切y刀,那么当前蛋糕的最多块数为[x(x+1)/2原创 2014-03-21 22:38:33 · 605 阅读 · 0 评论 -
线分面 && 面切体
(2013-06-21 13:44:30)SOJ4240:http://cstest.scu.edu.cn/soj/problem.action?id=4240切西瓜问题,属于后一个。这类问题一般都有固定的公式:二维的一般是an^2+bn+c,三维的一般是an^3+bn^2+cn+d.用待定系数法求出各个系数就可以了。代码:#include#include#incl原创 2014-03-21 22:35:31 · 585 阅读 · 0 评论 -
BM算法
(2012-07-14 16:17:28)首先,先简单说明一下有关BM算法的一些基本概念。 BM算法是一种精确字符串匹配算法(区别于模糊匹配)。 BM算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏字符规则 和好后缀规则,来决定向右跳跃的距离。 BM算法的基本流程: 设文本串T,模式串为P。首先将T与P进行左对齐,然后进行从右向左比较 ,如下图原创 2014-03-21 21:55:33 · 614 阅读 · 0 评论 -
Trie树(SOJ3336)
SOJ3336: http://cstest.scu.edu.cn/soj/problem.action?id=3336这道题在分类中写的是用Trie树。刚开始我用KMP做的,结果超时了。后来看到有人用26进制+map做的,试了一下过了。其实所谓的26进制,只是将字符串转化成一个long long型,对应的map由原来的map改成map。具体来讲就是:将'a'作为0,将'b'作为1,...原创 2014-03-21 21:04:17 · 384 阅读 · 0 评论 -
树状数组求解逆序数(SOJ2309)
(2012-07-20 20:04:48)SOJ2309:http://cstest.scu.edu.cn/soj/problem.action?id=2309这是我过的第一道树状数组的题,而且是用来解逆序数的。关于树状数组和数组的离散化问题,请见:http://blog.csdn.net/q573290534/article/details/6664902。个人觉得这篇博文写得很好。原创 2014-03-21 20:58:33 · 406 阅读 · 0 评论 -
Trie树
(2012-07-20 20:30:16)自己写了一个Trie树,以后当模板吧。不过临时写也不复杂。#include#include#define kind 26//26个小写字母。using namespace std;struct node{bool is_word;//表示是否为一个单词,是则为true,否为false。node *son[kind];//原创 2014-03-21 20:56:36 · 357 阅读 · 0 评论 -
树状数组的应用(SOJ2497)
(2012-07-22 14:57:55)SOJ2497:http://cstest.scu.edu.cn/soj/problem.action?id=2497这道题实际上是:对于数组s中的每个元素是s[i],找出s[i]左边的元素个数x和右边的元素个数y,然后求Sigma(x*y).求s[i]左边元素的个数用树状数组,求s[i]右边元素的个数只需将数组s倒过来处理即可。代码:原创 2014-03-21 20:33:25 · 477 阅读 · 0 评论 -
双端对列(SOJ3139)
这道题纯粹地利用双端对列。代码:#include#include#includeusing namespace std;struct node{ int number; int mark;}s[1000005];int main(){ int n,k; int i; dequeq; while(sc原创 2014-03-21 19:43:44 · 433 阅读 · 0 评论 -
快速排序
第一次动手写快排,直接给代码了。原创 2014-04-09 17:43:53 · 485 阅读 · 0 评论 -
用二叉排序树求解逆序数
本文代码为自己所写,思路参照博文:http://www.cppblog.com/myjfm/archive/2012/09/15/190772.html原创 2014-04-09 17:42:00 · 625 阅读 · 0 评论 -
利用快速排序求解k-th小数
如题,直接给代码了。#include#includeusing namespace std;int num[100005];int K;void exch(int &a,int &b){int temp;temp=a;a=b;b=temp;}int q_sort(int s,int e){srand((unsigned)time(NULL原创 2014-03-22 17:35:36 · 430 阅读 · 0 评论 -
2^n(n<=10000)
#include#includeusing namespace std;vectors[10005];void f(){ s[0].push_back(1); int i,j; int temp; int num; for(i=1;i { temp=0; for(j=0;j原创 2014-03-21 22:34:16 · 550 阅读 · 0 评论 -
KMP(SOJ3596)
(2012-07-15 19:28:27)SOJ3596: http://cstest.scu.edu.cn/soj/problem.action?id=3596这道题采用的算法是DP+KMP,也是我做KMP的题中最具挑战性的一道。首先利用KMP算法将所有的word在text中的所有位置(包括起点和终点)存到一个struct数组中。至于DP,设xiaoye[i]表示以text[原创 2014-03-21 21:16:52 · 392 阅读 · 0 评论 -
树状数组的应用(SOJ2559)
SOJ2559:http://cstest.scu.edu.cn/soj/problem.action?id=2559这道题是说对于给定的一个数组s求s[i]在前i个元素中的排名(从大到小)。其实很简单,对于s[i]只需找出前i个元素中题中的数据量为45000,对于每个元素的值没有具体的要求,只是为int型。首先对数组s进行归一化(我自己的命名,很多人说是离散化,我觉得归一化更为恰原创 2014-03-21 20:35:50 · 350 阅读 · 0 评论 -
线段树(SOJ2436)
(2012-07-27 23:37:34)SOJ2436:http://cstest.scu.edu.cn/soj/problem.action?id=2436这道题是POJ3264的删减版。其实线段树形式有多样,最关键的是要弄清楚每个结点要存的信息。代码:#includeusing namespace std;struct node{ int L;原创 2014-03-21 19:52:43 · 458 阅读 · 0 评论