算法
Depthslowly
好好经营自己的小空间
展开
-
Prim算法
最小生成树原创 2022-05-23 17:35:49 · 138 阅读 · 0 评论 -
Dijkstra算法
#Dijkstra算法是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题#核心思想是:每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。原创 2022-05-23 17:31:46 · 174 阅读 · 0 评论 -
平均查找长度
平均查找长度ASL_哔哩哔哩_bilibili无序顺序查找:成功:ASL =(n+1)/2 (1+2+...+n)/n失败:ASL = n+1 有个哨兵有序顺序查找:成功:ASL =(n+1)/2!失败:ASL =n/2 + n/(n+1)= (1+2+...+n+n)/(n+1)=sum(每个块块所在层数,一共n+1个块块) /(n+1) 一个n+1个失败的区间折半查找:类似二叉排序树成功(圆结点):ASL=sum(本层个数✖️层数)/总结...原创 2021-11-09 20:17:35 · 535 阅读 · 0 评论 -
排序算法性能
平均情况:堆、归、快最好情况:冒、直最差情况:堆、归>快一、插入直接插入:从第二位开始 变为哨兵 前面超后移动 哨兵归位希尔排序:dk/=2间插入排序二、交换冒泡排序:共(n+...+3+2+1)次 两两比较交换快速排序:前后与“枢纽”比较+“枢纽”左右分治 注:需要借助递归栈,容量和递归深度一样O(log2n)三、选择简单选择:依次选max 找下标 放最后堆排序:1、排序:初始建立大顶堆->【交换第一个和最后一个数字->大顶堆调整-〉...原创 2021-11-09 20:03:44 · 283 阅读 · 0 评论 -
输入输出流加速
ios::sync_with_stdio(false)原创 2016-10-05 13:07:16 · 457 阅读 · 0 评论 -
二分查找
二分查找Time Limit: 1000MS Memory Limit: 65536KBProblem Description 在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.Input 本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。Output 若存原创 2016-10-03 17:31:16 · 259 阅读 · 0 评论 -
各数据类型取值范围
#includeusing namespace std;int main(){ short a=32767; //未超范围(2^15-1) 约等于10^4 int b=2147483647; //未超范围(2^31-1) 约等于10^9 long c原创 2016-09-29 17:26:00 · 693 阅读 · 0 评论 -
每步取模
每步取模:要计算只包括加法、减法和乘法的整数表达式初一正整数n的余数,可以在每步计算之后对n取余,结果不变。原创 2016-11-02 15:58:07 · 734 阅读 · 0 评论 -
算术表达式的转换
算术表达式的转换Problem Description小明在学习了数据结构之后,突然想起了以前没有解决的算术表达式转化成后缀式的问题,今天他想解决一下。 因为有了数据结构的基础小明很快就解出了这个问题,但是他突然想到怎么求出算术表达式的前缀式和中缀式呢?小明很困惑。聪明的你帮他解决吧。Input 输入一算术表达式,以\'#\'字符作为结束标志。(数据保证原创 2016-11-02 15:55:36 · 413 阅读 · 0 评论 -
韩信点兵
韩信点兵(点击打开链接):一个数x用3除,除得的余数乘70;用5除,除得的余数乘21;用7除,除得的余数乘15。最后把这些乘积加起来再减去105的倍数(105k),就知道这个数x是多少(x%3*70+x%5*21+x%7*15-105k)。原创 2016-11-01 23:39:35 · 457 阅读 · 0 评论 -
最小公倍数和最大公约数
最小公倍数和最大公约数(点击打开链接):思路:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。例如,252和105的最大公约数是21;因为252 / 105 = 2余42,所以105和42的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至余数变为零。这时的除数就是所求的两个数的最大公约数。代码如下:#in原创 2016-11-01 23:38:58 · 338 阅读 · 0 评论 -
求闰年
求闰年(点击打开链接):思路:中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来。因此每四百年中要减少三个闰年。所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的年份,即使是4的倍数也不是闰年。(a%4==0&&a%100!=0||a%400==0)原创 2016-11-01 23:38:23 · 581 阅读 · 0 评论 -
多项式求和
多项式求和(点击打开链接):求出多项式(1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 ……)前n(0思路:因为存在精确度问题,经大量数据分析得出结果分为三个阶段,(1)不稳定阶段(0=270):结果稳定在0.69,不再变化。很多题目给的数据范围很大,但是经过大量数据分析,会发现数据结果呈周期性或固定值不变。原创 2016-11-01 23:37:51 · 439 阅读 · 0 评论 -
归并排序
归并求逆序数Problem Description对于数列a1,a2,a3…中的任意两个数ai,aj (i aj,那么我们就说这两个数构成了一个逆序对;在一个数列中逆序对的总数称之为逆序数,如数列 1 6 3 7 2 4 9中,(6,4)是一个逆序对,同样还有(3,2),(7,4),(6,2),(6,3)等等,你的任务是对给定的数列求出数列的逆序数。Input原创 2016-11-01 09:42:10 · 323 阅读 · 0 评论 -
冒泡排序
排序Time Limit: 1000MSMemory Limit: 32678KBSubmitStatisticProblem Description给你N(NInput输入数据第一行是一个正整数N,第二行有N个整数。Output输出一行,从小到大输出这N个数,中间用空格隔开。Example Input51 4 3 2 5原创 2016-10-03 17:51:41 · 575 阅读 · 0 评论 -
qsort快排
qsort快排Time Limit: 1000MS Memory Limit: 65536KBProblem Description给定N个整型范围内的整数,要求输出快速排序之后的结果。 Input连续输入多组数据,每组输入数据第一行给出正整数N(N Output输出快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。原创 2016-10-03 18:23:10 · 360 阅读 · 0 评论 -
素数筛(筛选法求素数)
求素数Problem Description 求小于n的所有素数的数量。(素数筛概念)Input 多组输入,输入整数n(n00),以0结束。Output 输出n以内所有素数的个数。Example Input100Example Output4代码如下:#include#i原创 2016-10-24 00:55:50 · 1525 阅读 · 0 评论 -
遍历二叉树
遍历二叉树Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序、后序和层序的方式遍历该二叉树。Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。Output每组输入数据对应输出2行:第1行输出中序遍历序列;第2行输出后原创 2016-10-23 09:08:25 · 813 阅读 · 0 评论 -
ASCII
#include using namespace std;int main(){ char a; int i=1; for(i=1; i<=128; i++) { a=i; cout<<i<<": "<<a<<"\t"; if(i%5==0) cout<<"\n"; } return 0;}原创 2016-10-11 21:44:36 · 235 阅读 · 0 评论 -
海伦公式
多项式求和(点击打开链接):求出多项式(1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 ……)前n(0结果精确到小数点后两位。思路:因为存在精确度问题,经大量数据分析得出结果分为三个阶段,(1)不稳定阶段(0),(2)周期变化阶段(60=270):结果稳定在0.69,不再变化。很多题目给的数据范围很大,但是经过大量数据分析,会发现数据结果呈周期性或固定值原创 2016-10-11 17:45:58 · 2063 阅读 · 0 评论 -
KMP字符串匹配
KMP简单应用Problem Description给定两个字符串string1和string2,判断string2是否为string1的子串。Input 输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。Output原创 2016-10-10 20:35:07 · 293 阅读 · 0 评论 -
多余元素删除之建表算法
for(k=0,i=0; i<n; i++) { scanf("%d",&a[i]); for(f=0,j=0; j<k; j++) { if(a[i]==a[j]) { f=1; break; } }原创 2016-10-08 17:11:00 · 876 阅读 · 0 评论 -
选择排序
选择排序Problem Description给你N(N个数,请你按照从小到大的顺序输出。Input输入数据第一行是一个正整数N,第二行有N个整数。Output输出一行,从小到大输出这N个数,中间用空格隔开。Example Input849 38 65 97 76 13 27 49Example Output原创 2016-10-07 20:24:55 · 390 阅读 · 0 评论 -
二次排序(sort、冒泡)
1、#include <algorithm>2、bool cmp(node a,node b){ if(a.h!=b.h) return a.h>b.h;//二次sotr排序部分 return a.w<b.w; return 0;}3、for(i=0; i<n-1; i++) for(j=0; j<n-i-1; j++) { if(arr[j].h<arr[j+1].h)//二次冒泡排序部分 {原创 2016-10-05 14:23:09 · 504 阅读 · 0 评论 -
sort快排
sort快排Problem Description给定N个整型范围内的整数,要求输出快速排序之后的结果。 Input输入数据第一行给出正整数N(N Output输出降序排序后的结果,数字间以一个空格间隔。Example Input849 38 65 97 76 13 27 49Example Output原创 2016-10-05 10:08:24 · 412 阅读 · 0 评论 -
最短路-Floyd算法
最短路径Problem Description 给定一个带权无向图,求节点1到节点n的最短路径。Input 输入包含多组数据,格式如下。第一行包括两个整数n m,代表节点个数和边的个数。(n剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。Output 每组输出占一行,仅输出从1到n的最短路径权值。(保证最短原创 2016-10-30 23:41:05 · 228 阅读 · 0 评论 -
DFS深度优先搜索遍历
图的深度遍历Problem Description请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。Input输入第一行为整数n(0 Output输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果。Example Input14 40 1原创 2016-10-29 23:47:57 · 1647 阅读 · 0 评论 -
BFS广度优先搜索遍历
广度优先搜索遍历Problem Description给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)Input输入第一行为整数n(0对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t原创 2016-10-27 15:53:24 · 1778 阅读 · 0 评论 -
Agri-Net(最小生成树)
Agri-NetTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 54170 Accepted: 22491DescriptionFarmer John has been elected mayor of his town! One of his campa原创 2016-11-15 10:49:15 · 251 阅读 · 0 评论 -
哈希查找
数据结构实验之查找七:线性之哈希表Problem Description根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)=Key%p,将关键字映射到长度为p的哈希表中,用线性探测法解决冲突。重复关键字放在hash表中的同一位置。Input连续输入多组数据,每组输入数据第一行为两个正整数N(N = N的最小素数),N是关键字总数,p是h原创 2016-11-17 11:12:05 · 517 阅读 · 0 评论 -
很恶心的一道模拟题,最近状态不好,很烦,静不下心来做,留着吧,以后有机会再做吧
Crashing RobotsDescriptionIn a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the robots reach their destinations without crashing into each原创 2016-11-17 21:11:30 · 344 阅读 · 0 评论 -
map()用法
代码如下:#include #include #include #include #include using namespace std;int main(){ int n,i; while(cin>>n,n) { mapmm; map::iterator it; string ch,ans;原创 2016-11-18 00:11:03 · 341 阅读 · 0 评论 -
Dungeon Master(BFS)
Dungeon MasterDescriptionYou are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minut原创 2016-11-19 17:35:06 · 381 阅读 · 0 评论 -
Radar Installation(贪心)
Radar InstallationDescriptionAssume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any r原创 2016-11-20 15:02:39 · 292 阅读 · 0 评论 -
Currency Exchange(SPFA寒假)
Currency ExchangeDescriptionSeveral currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only原创 2016-11-22 20:12:58 · 463 阅读 · 0 评论 -
Wormholes(SPFA)
WormholesDescriptionWhile exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its de原创 2016-11-22 23:16:50 · 370 阅读 · 0 评论 -
拓扑排序
判断给定图是否存在合法拓扑序列Problem Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。Input 输入包含多组,每组格式如下。第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n后面m行每行两个整数a b,表示从a到b有一条有向边。 Output 若给定有向图存在合法拓原创 2016-11-28 20:46:21 · 386 阅读 · 0 评论 -
Fence Repair(哈夫曼树)
Fence RepairDescriptionFarmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having so原创 2016-11-28 22:32:21 · 638 阅读 · 0 评论 -
Finding Nemo(FPFA没看懂,先存着)
Finding NemoTime Limit: 2000MS Memory Limit: 30000KTotal Submissions: 9337 Accepted: 2221DescriptionNemo is a naughty boy. One day he went into the deep sea all by原创 2016-11-20 15:28:28 · 989 阅读 · 0 评论 -
Tautology(永真式:状态压缩和递归)
TautologyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12321 Accepted: 4695DescriptionWFF 'N PROOF is a logic game played with dice. Each die has six原创 2016-11-14 22:15:37 · 472 阅读 · 0 评论