- 博客(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≤105),为通话记录条数。随后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
原创 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≤106)和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≤105),随后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
原创 还原二叉树
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关注的人