自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心

方得始终

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

转载 Trie/字典树(理论转自他人,代码自己实现)

理论原博文链接:点击打开链接Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本

2016-11-29 23:07:40 610

原创 POJ 2406 (字符串的匹配) 最小循环节问题

Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc" and b = "def" then a*b = "abcdef". If we think of concatenation as multiplication, exponentiation by a non-

2016-11-29 22:22:05 1014

原创 HUST 1010 字符串匹配(最小循环节问题)

There is a string A. The length of A is less than 1,000,000. I rewrite it again and again. Then I got a new string: AAAAAA...... Now I cut it from two different position and get a new string B. Then,

2016-11-29 22:14:51 407

原创 HDU 3746 字符串匹配(字符串的最小循环节问题)

DescriptionCC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise, there are only 99.9 yuan left. he is too distressed and thinking

2016-11-29 22:02:08 698

原创 文本的精确匹配(BF,MP,KMP)

一,BF算法暴力搜索,两重循环二,MP算法与BF算法不同的是,每当匹配失败,不必指针回溯,而是利用已经得到的部分匹配结果,将模式字符串滑动若干位置后,继续比较当失配的情况发生在模式p的第j位:1,当j=0,则让目标的指针前进一位,模式的起始比较地址回到P02,否则,在进行下一轮比较时,目标指针不发生回溯,仍指向失配的位置,而模式串的起始比较位置为P(f(j-1)+1)在

2016-11-29 21:32:47 1463

原创 全排列

全排列问题:一:可以利用深搜,见啊哈算法二:可以利用递归,见Java代码三:STL的模板函数next_permutation()://以字符串为例//法一:int main(){ string str; cin>>str; sort(str.begin(),str.end()); cout<<str<<'\n'; while(next_permutatio

2016-11-26 12:16:46 481

转载 三分查找求最值

二分查找 适用于单调函数中逼近求解某点的值。如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点。下面的方法应该是三分查找的一个变形。如图所示,已知左右端点L、R,要求找到白点的位置。思路:通过不断缩小 [L,R] 的范围,无限逼近白点。做法:先取 [L,R] 的中点 mid,再取 [mid,R] 的中点 mmid,通过比较 f(mid) 与

2016-11-26 11:39:03 512

原创 5-20 电话聊天狂人

5-20 电话聊天狂人   (25分)给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数NN(\le 10^5≤10​5​​),为通话记录条数。随后NN行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以

2016-11-21 21:54:42 1387

转载 C++11中新特性之:unordered_map

C++11中新特性之:unordered_map时间:2015-03-09 22:17:42      阅读:3985      评论:0      收藏:0      [点我收藏+]标签:des   class   com   使用   http   si   数据   it   la   unordered_map和map类似,都是存储的key-value的值,

2016-11-21 21:52:29 968

原创 C++ STL(竞赛常用部分)

haha

2016-11-21 21:51:48 3018

原创 5-19 PAT Judge

5-19 PAT Judge   (25分)The ranklist of PAT is generated from the status list, which shows the scores of the submissions. This time you are supposed to generate the ranklist for PAT.Input Sp

2016-11-21 20:43:49 537

原创 PTA The World's Richest

5-17 The World's Richest   (25分)Forbes magazine publishes every year its list of billionaires based on the annual ranking of the world's wealthiest people. Now you are supposed to simulate thi

2016-11-21 13:39:25 650

原创 PTA 寻找大富翁

5-18 寻找大富翁   (25分)2015年胡润研究院的调查显示,截至2014年9月,个人资产在600万元以上高净值人群达290万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。输入格式:输入首先给出两个正整数NN(\le 10^6≤10​6​​)和MM(\le 10≤10),其中NN为总人数,MM为需要找出的大富翁数;接下来一行给出NN个

2016-11-21 13:37:15 2138

原创 TransMoney

法一:自己//只能精确到千亿位,老师的可以随意位package week;import java.util.*;public class TransMoney { public static void main(String []args){ char []digit={'零','一','二','三','四','五','六','七','八','九'}; char []loc={

2016-11-21 13:04:46 389

原创 C++常用函数

sort函数:头文件#include 原型template  void sort( RandomIt first, RandomIt last );(1)  template  void sort( RandomIt first,

2016-11-20 23:01:41 521

原创 堆排序

#include #include #include using namespace std;//排序为从小到大,建立最大堆排序//且因为数组的缘故,此处的堆和之前的不一样,之前均第一个节点编号为1//此处为0,满足leftchild=parent*2+1,rightchild=parent*2+2void PrecDown(int array[],int i,int n)//下滤

2016-11-16 19:11:36 345

原创 希尔排序

//不稳定 O(N^2)//一趟Hk排序就是对Hk个独立的子数组执行一次插入排序#include #include #include using namespace std;void ShellSort(int array[],int n){ int increament; int temp; int i,j; for(increament=n/2;increament>0;i

2016-11-16 17:52:54 298

原创 插入排序

//插入排序是稳定的,时间复杂度最好O(N),最坏O(N^2),平均O(N^2)//像选择排序,冒泡排序,插入排序......这些基于 比较 交换 相邻元素 进行排序的算法 复杂度平均要O(N^2)#include #include #include using namespace std;void InsertSort(int array[],int n){ int i,j,tem

2016-11-16 17:35:00 310

原创 快速幂

//快速幂//经常涉及取余//本例对1000000007取余,因此需要用long long,以免中间计算过程超出int范围#include #include #include using namespace std;__int64 QuickPow(int m,int n){ __int64 result=1,pow=m; while(n){ if(n&1) resu

2016-11-16 17:10:55 306

原创 合数分解

//任何一个合数均能分解为质数的连乘积//分解为a^m*b^n*c^q......a,b,c均为质数且a<b<c//把一个数进行素数分解,得到的因子为全部这个数可被之整除的素数法一:struct node{ int num; int index;};struct node array[MAXN];int top=-1;for(int i=2;number!=1;i++){ i

2016-11-16 16:51:56 5770

原创 叉乘求面积

叉乘求多边形面积,多边形可有凸边和凹边逆时针方向给出所有顶点的坐标面积为,逆时针方向从第一个点到最后一个点,取此时的点和后面的一个点做叉乘的和的一半

2016-11-16 16:10:24 3959

原创 素数筛法

//素数筛法1//非线性#include #include #include using namespace std;#define MAXN 1000int main(){ bool array[MAXN+1]; memset(array,true,sizeof(array)); array[0]=array[1]=false; for(int i=2;i<=MAXN/2;

2016-11-16 15:38:27 425

原创 欧几里德求最大公约数(辗转相除法)

定理:Gcd(m,n)=Gcd(n,m mod n)证明:对于任何正整数a,b。如果a>b,都有a=k*b+r 即r=a-k*b => r=a mod b.假设d为a,b的公约数,则a=a1*d,b=b1*d。而r=a1*d-k*b1*d=(a1-k*b1)*d => d也是r的约数 => d也是(a,r)的公约数则说明(a,b)的公约数也就是(b,r)的公约数。因此g

2016-11-16 13:35:52 699

原创 最长递增子序列

//动态规划#include #include #include using namespace std;#define MAXN 10int dp[MAXN];int main(){ int array[MAXN]; int max=0; for(int i=0;i<MAXN;i++) cin>>array[i]; for(int t=0;t<MAXN;t++)

2016-11-15 23:15:18 338

原创 最长公共子串

找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。动态转移方程为:如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1如果xi ! = yj,  那么c[i][j] = 0//动态规划#include #include #include using namespace std;int dp[101][101];int

2016-11-15 22:53:39 283

原创 最长公共子序列

最长公共子序列举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个,比如其中的cb,cgs等等都是其子序列,我们可以看出子序列不见得一定是连续的,连续的那是子串。从图中我们看到了最长公共子序列为blog,仔细想想我们可以发现其实最长公共子序列的个数不是唯一的,可能会有两个以上,但是长度一定是唯一的,比如这里的最长公共子序列的长度为4。

2016-11-15 22:32:57 354

原创 二叉堆

//Binary Heap,the most common implement of Poriority Queen(Heap)//以最小堆为例#include #include #include struct heapNode{ int capacity; int size; int *data;};struct heapNode* Init(struct heapNode*

2016-11-14 23:02:30 482

原创 POJ 3070 (矩阵快速幂,矩阵快速幂求斐波那契)

HOMEPROBLEMSTATUSCONTESTAdd ContestStatisticRANKLOGOUTccDLlyyUPDATEHappyDumplings S00677:00:00OverviewProblemStatusRankDiscussA B C D E F G H I J KH - 矩阵快速幂Time Limit:1000MS     Memory Limit:65536KB

2016-11-12 16:24:00 641

转载 矩阵快速幂

一、矩阵的基础知识1.结合性 (AB)C=A(BC).2.对加法的分配性 (A+B)C=AC+BC,C(A+B)=CA+CB .3.对数乘的结合性 k(AB)=(kA)B =A(kB).4.关于转置 (AB)'=B'A'.一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义一个矩阵的结构体,我采用的是后者。最特殊的矩阵应该

2016-11-12 15:27:21 500

原创 同模定理

A*B % C = (A%C * B%C)%C(A+B)%C = (A%C + B%C)%C如:532 mod 7 =(500%7+30%7+2%7)%7

2016-11-12 15:02:38 2479

原创 HDU 1003 最大连续子段和

最大连续子段和HDU 1003DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 +

2016-11-12 11:47:32 398

原创 HDU 2602 Bone Collector(01背包)

Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave … The bone collecto

2016-11-12 10:48:00 363

原创 PTA 树种统计

5-12 树种统计   (25分)随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。输入格式:输入首先给出正整数N(\le 10^5≤10​5​​),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。输出格式:按字典序递增输

2016-11-09 18:23:06 1702

原创 PTA 5-10 树的同构

5-10 树的同构   (25分)给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:

2016-11-09 15:58:59 1019

原创 二叉搜索树的顺序实现

二叉搜索树也可顺序实现

2016-11-08 21:30:51 548

原创 还原二叉树

5-9 还原二叉树   (25分)给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(\le≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEA

2016-11-07 22:37:16 854

原创 是否同一棵二叉搜索树

5-7 是否同一棵二叉搜索树   (25分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两

2016-11-07 19:47:12 988

原创 数字转换为通俗汉字

package java拓展;import java.util.*;public class Transofmoney {//钱数用中文表示 public static void main(String args[]){ char add[]={'千','百','十','亿','千','百','十','万','千','百','十'}; char num[]={'零','壹','

2016-11-07 13:58:14 515

原创 全排列

//The algorithm of full arrangement from the teacher ZhengLiu import java.util.*;class Deal{ int n; int count=0; int array[]; Deal(int n){ this.n=n; array= new int[n+1]; for(int i=1;i<=n;i

2016-11-07 13:54:17 295

原创 每个单词间一个空格,首字母大写

//First,change the words to the standard form,where every word is separated by only one blank//Second,change every word's first alphabet to the upperimport java.util.*;import java.lang.*;class Dea

2016-11-07 13:53:03 2034

空空如也

空空如也

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

TA关注的人

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