自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 HDU1753(大数相加)

这道题本质上就是大数相加,用string处理会很方便。分为整数部分和小数部分。先让小数和小数相加,以小数点对齐,加完把多余的零去掉,可能会有进位到整数的情况,如果有的话整数部分加一就行了。然后整数和整数相加,然后把整数和小数连接起来,输入的时候可能会有正整数,可以让正整数 +’.’+‘0’,变成小数。#include<string>#include<iostream>...

2019-10-17 13:27:34 201

原创 hdu1711(kmp)

#include<iostream>using namespace std;int a[1000005];int b[10005];int nextarr[10005];int n, m;//void getnext() //未优化//{// nextarr[0] = -1;// int k = -1;// int j = 0;// ...

2019-10-15 14:22:31 128

原创 hdu1715(大数相加)

这题主要考察的就是大数相加,借助string可以很方便的做这道题。#include<string>#include<iostream>using namespace std;string fun(string a, string b){ int len1 = a.length(); int len2 = b.length(); if (len1 > ...

2019-10-15 09:08:18 136

原创 HDU1598(并查集)

这题我用DFS超时,用并查集可以AC。#include<iostream>#include<algorithm>using namespace std;int f[210];int n, m, pos;class Edge{public: int u, v, val; friend bool operator<(const Edge& a...

2019-09-30 13:35:41 123

原创 HUD1597(二分查找)

#include<iostream>using namespace std;long long array1[100000];int find(int n){ int bot = 1; int top = 100000; int mid; while (bot <= top) { mid = (bot + top) / 2; if (n > a...

2019-09-30 10:55:01 97

原创 HDU1495

在AC的基础上,加入父节点,可以回溯到原点。从而观察整个倒可乐的过程。#include<iostream>#include<queue>#include<stack>#include<algorithm>using namespace std;int s, m, n;int mark[101][101][101];int flag;...

2019-09-05 13:21:58 85

原创 HDU1385

#include<iostream>#include<algorithm>using namespace std;int maze[55][55];int city[55];int path[55][55]; //路径int n; //城市数void input(){ int i, j, w; for (i = 1; i <= n; i++)...

2019-08-29 10:53:34 122

转载 Floyd模板

在网上看到的模板,记录下来。#include int main() { int e[10][10],k,i,j,n,m,t1,t2,t3; int inf=99999999; //用inf(infinity的缩写)存储一个我们认为的正无穷值 //读入n和m,n表示顶点个数,m表示边的条数 scanf("%d %d",&...

2019-08-29 08:43:24 139

原创 HDU1272(并查集)

#include<iostream>#include<stdio.h>using namespace std;int mark[100005];int f[100005];int flag;int find(int a){ int r=a; while(r!=f[r]) r=f[r]; int i=a; int j; while(i!=r)...

2019-04-22 10:57:56 85

原创 HDU1266(map嵌套)

C++的STL真的强大。#include<string>#include<iostream>#include<map>using namespace std;int main(){ int n; cin>>n; while(n--) { map<string,map<string,int> > a...

2019-04-18 17:28:16 106

原创 HDU1254(双BFS)

箱子每走一步,需要bfs搜索人是否能走到推箱子的位置。箱子可以走已经走过的位置,但不能在已经走过的位置走相同的方向,需要用mark[x][y][dir]三维数组标记。#include<iostream>#include<queue>#include<string.h>using namespace std;int m,n;int map[10][1...

2019-04-16 11:49:18 112

原创 POJ2418(二叉搜索树)

#include<iostream>using namespace std;struct BTree{ char value[35]; int num; struct BTree *lchild; struct BTree *rchild;};void insert_node(BTree* &root,char *s1){ if(root==NULL)...

2019-04-06 13:53:48 206

原创 二叉树的基本操作

#include<iostream>#include<algorithm>#include<queue>using namespace std;class btree{public: int value; btree *lchild; btree *rchild; };btree * createbtree(btree * root,i...

2019-04-02 11:22:36 71

原创 八皇后

#include&lt;iostream&gt;using namespace std;int mark_line[10];int sum=0;int N;bool can(int x,int y){ for(int i=1;i&lt;x;i++) { if( y ==mark_line[i] ) return false; if( (x-i) == (y-...

2019-01-26 07:31:59 78

原创 HDU1044

这题要先用BFS求得每个点之间的最短路,然后用DFS就不会超时了。#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;queue&gt;using namespace std;int w,h,l,m;char maze[52][52];int mark1[52][52];int mark2[20];int v...

2019-01-25 09:10:04 285

原创 HDU1026

这题我用广搜+优先队列做的,而且每个节点都需要保存父节点,这样根据最后一个节点就可以把路径倒序输出。#include&lt;iostream&gt;#include&lt;queue&gt;#include&lt;stack&gt;using namespace std;int mark[102][102]; //标记已经走过的路径char maze[102][102]; ...

2019-01-13 17:03:13 180

原创 归并排序

#include&lt;iostream&gt;using namespace std;const int N = 6;void merge(int array[],int left,int right,int mid){ int temp[N]; int i,j,index1,index2; for(j=left;j&lt;=right;j++) temp[j] = arra...

2018-12-13 20:19:36 96

原创 快速排序

#include&lt;iostream&gt;using namespace std;void swap(int array[],int a,int b){ int t; t=array[a]; array[a]=array[b]; array[b]=t;}int partition(int array[],int left,int right){ ...

2018-12-09 14:45:31 82

原创 根据中序和后序还原二叉树(数组)

#include&lt;iostream&gt;using namespace std;int tree[20];int in_tree[20];int post_tree[20];class Btree{public: int value; Btree *lchild; Btree *rchild;};Btree * Created(int in_b,int in_e,...

2018-12-08 17:05:33 342

原创 堆排序

简介堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。时间复杂度是O(n*logn)的,如果有10亿条数据,假设计算机每秒进行运算10亿次,冒泡法需要30年,而堆排序30s就可以完成。#include&amp;lt;iostream&amp;gt;using namespace ...

2018-12-06 20:07:39 86

原创 poj2421(prim算法)

我之前习惯用邻接表存储图,这题虽然给的是邻接矩阵,我还是转化为邻接表,结果一直WA ╮(╯﹏╰)╭。只好改用邻接矩阵写。这题就是最小生成树的一点变形,最后给的顶点说明已经建好路了,将两点之间的距离置为0即可。贴代码// 228k 125ms#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;queue&amp;amp;amp;gt;using namespace

2018-12-06 15:44:58 237

原创 poj2421(prim算法)

用邻接表一直WA,只好改用邻接矩阵。贴代码#include&amp;lt;iostream&amp;gt;#include&amp;lt;vector&amp;gt;#include&amp;lt;queue&amp;gt;#include&amp;lt;string&amp;gt;using namespace std;char str[2010][8];int mark[2010];

2018-12-06 13:41:25 292

原创 poj2253(prim算法)

这题也可以用Dijkstra算法做,我用prim做出来的,个人感觉prim更适合这道题。找到最小生成树里的最长边即可。注意并不是所有点都需要建成最小生成树,到达终点就可以终止了。我习惯用邻接表,而且顶点是从0开始的。贴代码#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;vector&amp;amp;gt;#include&amp;amp;lt;queue&amp;amp;g

2018-12-05 11:30:57 236

原创 最小生成树(prim算法)

1.最小生成树图G的生成树是一颗包含G的所有顶点的树,树上所有有权值总和表示代价,那么在G的所有的生成树中代价最小的生成树称为图G的最小生成树,简称(MST).图二就是图一的最小生成树。2.普里姆算法(prim)prim算法和Dijkstra算法类似,也是贪心法。1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew = {x},其中x为集合V中的任一节点(...

2018-12-04 10:47:12 566

原创 根据中序和后序还原二叉树

程序是替人工作的,首先自己要知道怎么还原树,才能交给计算机处理。所以可以自己手动还原一下。#include&amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include&amp;amp;amp;lt;string&amp;amp;amp;gt;using namespace std;class BTree{public: char value; BTree *lchild; BTree *rchild;

2018-12-03 21:36:01 962

原创 poj1258(prim)

这题会prim算法没啥难度的(prim算法也没啥难的),注意有多组测试数据。我用了priority_queue,寻找最优边。贴代码//Memory 352k Time 63ms#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;queue&amp;amp;gt;#include&amp;amp;lt;vector&amp;amp;gt;using namespace

2018-11-29 22:29:26 148

原创 poj1062(Dijkstra)

这题用到了Dijkstra算法,难点在处理等级限制。我天真以为把前驱节点和当前访问节点比较一下就行了。too young too naive…这个需要枚举所有等级范围。因为酋长是必须要访问的节点,所以要以酋长为中心枚举。比如说酋长等级是3,等级限制是3。符合条件的范围是0—3、1—4、2—5、3—6(会有比酋长等级高的人)。所以需要搜索4次,把不符合条件的节点标记为不能访问。贴代码#incl...

2018-11-29 13:19:13 386

原创 poj1847(Dijkstra)

如果会Dijstra算法,这题水水的。就是题意有点难懂。Sample Input3 2 12 2 32 3 12 1 2第一行,表示有3个顶点,求从2走向1的最短路径。第二行,表示从顶点1发出两条边,默认通向顶点2路径长度为0,通向顶点3路径长度为1.(不是默认通向的顶点路径长度为1)第三行,表示从顶点2发出两条边,默认通向顶点3路径长度为0,通向顶点1路径长度为1.第四行,表示...

2018-11-25 22:04:24 157

原创 poj2387(Dijkstra)

这题直接用Dijkstra算法就行了,没什么难度。要注意T是路径数,N是顶点数,别弄反了。可能会有重边的情况不过,不过我用的邻接表,没什么影响。代码//Menory 412k Time 110ms#include&amp;amp;lt;vector&amp;amp;gt;#include&amp;amp;lt;queue&amp;amp;gt;#include&amp;amp;lt;iostream&amp;amp;gt;using

2018-11-25 13:38:54 129

原创 Dijkstra算法

1.Dijkstra算法介绍是解决从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。...

2018-11-24 20:13:12 176

原创 poj2367——拓扑排序

如果懂拓扑排序的话,这题挺水的。想了解拓扑排序点击:拓扑排序传送贴代码://Memory 184k Time 0ms#include&amp;lt;iostream&amp;gt;#include&amp;lt;vector&amp;gt;#include&amp;lt;queue&amp;gt;using namespace std;int main(){ int n; int num; int co

2018-11-22 22:59:07 335

原创 堆与优先队列

1.堆的性质(1)完全二叉树的层次序列,可以用数组表示(2)堆中储存的数是局部有序的,堆不唯一PS:节点的值与其孩子的值之间存在限制,任何一个节点与其兄弟之间都没有直接的限制。(3)从逻辑角度看,堆实际上是一种树形结构(4)堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左子节点和右子节点的值。2.堆和优先队列的关系堆可以用于实现优先队列3.堆的实现...

2018-11-21 21:06:08 379

原创 二叉搜索树

1.什么是二叉搜索树二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树), 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。2.为啥要学二叉搜索树呢?大家都对二分查找有一定的了解吧。里面每一个元素是有序的,查找的时间复杂度是O(log(n))的。效率...

2018-11-19 21:56:29 111

原创 打印树

在学习二叉树时,是不是感觉很抽象,其实我们可以写个程序将二叉树打印在屏幕上。void print(BTree *root,int h) { if(root!=NULL) { print(root-&amp;amp;gt;rchild,h+1); for(int i=0;i&amp;amp;lt;h;i++) cout&amp;amp;lt;&amp;amp;lt;&amp;quot; &amp;quot;;

2018-11-19 20:27:31 1035

原创 拓扑排序(深搜实现)

这里给大家介绍另外一种拓扑排序,这种是基于深搜实现的。上图:如果我们按照节点编号顺序从节点0开始深度优先搜索,就会得到下面这个序列。5,6,3,2,8,7,0,4,1把这个序列逆置一下,就会发现这是一个正确的拓扑序列。(可以好好想一下这个结论,我当时想了很久)1,4,0,7,8,2,3,6,5贴代码#include&amp;amp;amp;lt;vector&amp;amp;amp;gt;#include&amp;amp;amp;lt;iostre

2018-11-19 13:05:36 1328 2

原创 拓扑排序(队列实现)

什么是拓扑排序呢?就是将一个有向无环图中所有顶点在不违反先决条件关系的前提下排成线性序列的过程称为拓扑排序。学拓扑排序有什么用呢?当然有用啦~。比如说学校排课的时候,会考虑到有的课程需要先修。我们学完C程序设计这门课,有了编程基础,然后才能学习数据结构。大学要修很多门课程的,人为的去排课很头痛的,这时候就可以用拓扑排序解决这个问题。拓扑排序只针对有向无环图(DAG),有两种方法可以实现,一种是...

2018-11-19 11:48:24 4590

空空如也

空空如也

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

TA关注的人

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