自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10099 - The Tourist Guide

题目大意:找出从起点到终点路径最小边的最大值这题有一个陷阱,假设最大值为max,则每次运输的人数只能为max-1,因为每次导游要包含在运输人数里思路:贪心+最大生成树kruskal算法每次找最大的一条边,如果这条边连接了两棵不同的树,则合并这两棵树,直到起点与终点联通,则当前边的值即为最小边的最大值kruskal算法代码如下:(AC)#inclu

2016-08-30 21:35:03 352

原创 10034 Freckles

题目大意:给你n个点的坐标,任意两个点都可以相连让你找出最小生成树的总边长思路:最小生成树问题        prim  or  kruskal代码:prim算法(AC)#include#include#include#include#include#includeusing namespace std;struct vertex {

2016-08-30 16:41:18 217

原创 STL容器之优先队列

参考:拼装小火车要学会如何定义最小优先队列、最大优先队列对于自己定义的结构体,如何定义最小、最大优先队列核心://定义比较结构struct cmp1{ bool operator ()(int &a,int &b){ return a>b;//最小值优先 }};struct cmp2{ bool operator ()(i

2016-08-30 14:51:15 198

原创 c&c++ error

8.30今天写程序的时候产生了一个这样的错误error:no type named iterator_category in struct错误代码类似下面:#include #include #include using namespace std; struct vertex{ int x, y;}Point;double distance(cons

2016-08-30 14:44:15 395

原创 576-Risk

题目大意:一个棋盘类的战争游戏。棋盘上有很多国家,求从一个国家到另一个国家的最短距离输入:1-19行,第i行的第一个数x表示有x个国家与国家i相邻,后面的x个数表示的是与i相邻的国家          要注意如果ij相邻则ji也是相邻的          本质是一个无向图          输出:对于每个给定的起点和终点,输出最短路径思路:有权无向图(无负权)求

2016-08-30 10:39:59 314

原创 排序算法

关键词:插入冒泡选择、希尔归并快排、堆排序倒着讲1.堆排序1.1有关堆与优先队列,看这里堆与优先队列1.2堆排序的思想:    最大堆,每次把根从堆中取出来删去,然后从新建堆,并把取出来的元素放到数组的最后    那么最大的元素被放到n-1的位置,第二大的元素被放到n-2的位置。。。直到最后,数组就变成的由小到大的顺序 1.3算法复杂度     最好最差平均

2016-08-27 11:00:54 410

原创 堆与优先队列

1.针对的问题:很快的找出最大的元素(最大堆)、很快的找出最小的元素(最小堆)                         它不适用于从一堆数中检索某一个数      如何去定义一个堆?抓住两点:   完全二叉树、任何一个内部结点的值大于等于其子节点的值   一个堆一定是完全二叉树的形式:节约空间、可以很方便的用数组表示     最大堆:根大于等于任何一个子节点(堆

2016-08-27 10:06:55 350

原创 判断图中是否存在环

参考博客:xwdreamer的专栏1.对于无向图,有以下三种方法剪枝、无环连通分支边数m1.1剪枝1删除所有度数为0的点2把所有度数为1的点入队3.从队列中取出一个点,删除这个点,并且所有与这个点相关联的点的度数都减14.重复步骤2、3直到队列为空如果还有为被删除的点,说明存在环1.2无环连通分支边数m通过BFS,DFS可以得到图的连

2016-08-26 17:11:08 2371

原创 单源最短路径算法

1.单源最短路径以及Dijsktra算法2.多源最短路径以及Floyd算法1.1单源最短路径:即从一个特定的点出发,寻找这个点到其他点的最短路径对于一个无权图,BFS算法就可以了。但是对于加权图,BFS行不通1.2 Dijkstra(迪杰斯特拉):针对加权有向图、单源最短路径dijkstra通过一个简单的动态规划思想来求最短路径。(假设求从点s出的的单源

2016-08-26 15:40:24 3308

原创 最小生成树

1.MST(Minimum spanning tree)A minimum spanning tree is a spanning tree of a connected,undirected graph.It connects all the verticals together  with the minimum total weighting for it's edges.最小生

2016-08-26 14:08:26 362

原创 108 - Maximum Sum

原题地址108-MaximunSum大意:求矩阵最大连续和。是对一维序列最大连续和问题的扩展,具体参考思路:将二维转化为一维,枚举所有行的情况代码如下:结果:AC#include#include#includeusing namespace std;int n;int a[105][105];int sum[105][105];int main(){

2016-08-22 20:06:02 214

原创 qsort的使用

原地址CPlusPlusfunctionqsortvoid qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));Sort elements of arraySorts the num elem

2016-08-21 15:42:17 245

原创 简单图+Havel_Hakimi定理

1.什么是简单图:没有平行边和自环什么是平行边?对于无向图,如果两个点之间有一条以上的边,则这些边是平行边; 对于有向图,如果一个点指向另一个点的边多于一条,则这些边是平行边什么是自环?边的两个端点是同一个点2.度序列一个由图的各个点的度数组成的序列3.Havel_Hakimi定理:用于判断一个度序列能否转换成一个简单图流程:度序列按

2016-08-21 15:24:38 1021

原创 10720 - Graph Construction

题意:给你一个度数序列,让你判定该序列能否表示一个图思路:Havel_Hakimi定理参考:http://blog.csdn.net/shuangde800/article/details/7857246代码:#includeusing namespace std;int n;int arr[10000];int cmp(c

2016-08-21 15:08:03 467

原创 101 - The Blocks Problem

题目大意:给你n个数字0~n-1初始,数字i在位置i上有如下四种操作:move a onto b:把a、b上面的所有数字移动回原来的位置,再把a移动到b上move a  over b:  把a上的数字移动回数字原来的位置,再把a移动到含有b的堆的上方pile a onto b:    把b上的数字移动回原来的位置,把含有a的堆移动到b上(a原本上面的数字顺序不变)p

2016-08-19 06:39:38 199

原创 碎碎念_天天更

8.181.有一个变量作为while循环的条件时,如while(size>0),那么这个变量的更新应该在循环体的最后。   如果更新完size后,循环体还有语句没有执行,则应该先判断一下此时是否已经到达循环结束的调节,如果是,用break结束循环。   for同理。  最好不要再循环体的中间变更条件变量,如果变更了一定要及时检查。2.if语句,循环语句都是比较耗费时间的

2016-08-18 09:07:27 383

原创 133 - The Dole Queued

原题大意:编号1-N的N个人由1开始逆时针站成一个环。从第一个人开始逆时针数K个人;再从第N个人开始顺时针数M个人,第K、M出队。如果KM是同一个人,只出队一次。从K逆时针下一个人、N顺时针下一个人开始,重复上述步骤。直到队列为空。思路:关键字:数据结构两种实现方式:双向链表                         环形数组

2016-08-18 07:00:04 200

原创 657 - The die is cast

这题就是递归套用递归先递归搜索骰子,如果在骰子里面发现了点,在对该点递归,同时更新点数。代码如下:#include#include using namespace std;char pic[60][200];int visit[60][200];int cnt[100];int col, row;//对骰子上的点递归void dfs_dot(int x, i

2016-08-17 14:38:56 177

原创 784 - Maze Exploration

思路:从*所在的位置出发,dfs历遍所有与它联通的点并将其变为#dfs实现关键思路在于两点:1.哪些点是与当前点联通的2.dfs返回条件代码如下:#includeusing namespace std;char maze[35][90];int visit[35][90];int r;//the row of mazevoid DFS(int ro

2016-08-17 13:29:36 200

原创 572 - Oil Deposits

一道基础的图的历遍的题。思路是由一个v[][]标记当前位置是否被visit过,g[][]存储当前是否为pocket每次DFS历遍一块deposit主程序扫描g[][],没发现一块没有被visit过的pocket,就调用DFS以它为起点历遍它代码如下:#includeusing namespace std;char g[110][110];int vis[

2016-08-17 11:01:53 194

原创 10562 - Undraw the Trees

参考博客:http://blog.csdn.net/goomaple/article/details/7818170自己的代码实现:#includeusing namespace std;char Tree[210][210];void DFS(int r, int c) { cout << Tree[r][c]; //输出前导左括号 cout << "(

2016-08-17 08:00:58 181

原创 112 - Tree Summing

BackgroundLISP was one of the earliest high-level programming languages and, with FORTRAN, is one of the oldest languages currently being used. Lists, which are the fundamental data structures in LI

2016-08-16 09:27:45 287

原创 二叉树

本文包含以下内容:一.二叉树的一些基本概念二.两条定理三.二叉树的层次历遍四.二叉树的数组实现和链表实现五.二叉检索树六.总结一.二叉树的基本概念二叉树:一个点的集合,这个集合要么为空,要么包含一个根节点和两个子二叉树祖先和子孙:如果一条路径从结点R至M,那么R是M的祖先,M是R的子孙深度、高度、层数:R至M路径长度为L,则至M的深度为L,高度为L+

2016-08-15 18:22:02 883

原创 队列和堆栈

本文主要包含以下内容:1.栈以及栈的实现2.队列以及队列的两种实现方式3.总结1.栈以及栈的两种实现

2016-08-15 13:11:12 241

原创 vs2015

1.变量名一改全改选着你要修改的变量名,按下ctr+f,图下图所示(此处我选的是top)2.在下面的方框里填下你想更改的名称(我填写的是length)b->c表示改一个, ab->ac表示全部都更改点击ab->ac即可

2016-08-15 10:23:26 226

原创 线性表--顺序表及链表

本文包含以下内容:一、线性表的介绍以及抽象ADT二、顺序表及顺序表的实现三、链表及链表的实现四、顺序表和链表的比较五、总结参考书目:《数据结构与算法分析》【美】Clifford A.Shaffer著一、线性表的介绍以及抽象ADT1.什么是线性表?关键字:线性、有序、有限。所谓线性,是一个元素接着一个元素,就像一条线那样排放。而不是离散散乱的,

2016-08-15 07:24:53 1519

原创 409 - Excuses, Excuses!

本文包含以下内容:一、思路二、代码实现三、总结一、思路本题主要考察字符串的输入输出、匹配对于K,E,scanf读取,getchar接收\nkeywords和excuses都需要被存起来,因为keywords要用于查找匹配,excuse最后输出 中要用到,可以考虑char型的二维数组进行存储一个keyword一行,中间无空格无特殊符号,因此可以用scanf或者

2016-08-13 20:24:44 259

原创 537 - Artificial Intelligence?

一.思路二.代码三.总结一.思路本题关键是字符串读入提取的问题,一开始我觉得用getchar一个一个读然后判断的话,如果读到等号等号前面的字符没有办法得到了用gets一次性读入一行字符的话还是要一个一个判断于是想着用scanf,每次读入一个单词判断一下这个单词里有没有等号但是实际上用scanf读反而会是程度读起来更复杂。因为用scanf读入后还是要一

2016-08-13 15:24:14 309

原创 10010where is waldorf

本文包含以下内容:一.思路二.代码三.总结一.思路字符串搜索问题。因为原题中说了“A word matches a straight, uninterrupted line of letters in the grid.”(一个单词匹配网格中的一条直的、不间断的线)因为有这句话,使搜索策略变得非常简单:从上至下,从左至右历遍grid,如果发现一个字符与w

2016-08-13 09:50:00 207

原创 10361 - Automatic Poetry

本文包含以下内容:一.思路二.程序三.总结一.思路本题考查的关键是对字符串的读取和输出的问题。要注意以下几点:1.如果是用scanf读取一个数字n,其后要用一个getchar读取残存在缓冲区的换行符。   如果是用cin读取则不必。因为cin会丢弃使其输入停止的\n,而scanf不会2.接下来是如何读取s1   s2  s3  s4 s5的问题   

2016-08-13 06:45:26 388

原创 字符串输入小结

本文包含对一下几种字符串输入方式的小结:1. '\0'    '\n'2.getchar()3.gets_s()4.scanf5.cin    cin.get()     cin.getline()6.freopen_s()1.'\0'是字符串的结束字符,没有结束字符的字符串是不能被正常输出的,后面会输出千奇百怪的内容     '\n'表示回车符

2016-08-12 20:38:21 245

原创 10003木棍切割问题

原题详见UVa10003本文主要包含一下内容:1.数学模型的建立2.递推伪代码的推导3.程序实现4.总结关键字: 动态规划     集合1.数学模型的建立很多人解不出这道题从根本上是没有读懂题意。我们现在来从头分析一下。已知:木棍的长度给定为L,切割点数给定为n,而且每个切割点的位置也是固定的。每次切割的花费等于被切割的木棍的长度。要求:最少

2016-08-11 20:51:34 3355 1

原创 116单向TSP

(原题详见UVa116)本文主要包含以下内容:1.数学模型的建立2.递推伪代码的推导3.代码实现4.总结关键字:动态规划1.数学模型的建立这是一道典型的动态规划题目。定义d[i][j]表示在矩阵i,j处是最小和。那么d[i][j]可能由三种状态转移而来d[i-1][j-1]   d[i][j-1]      d[i+1][j-1]状态转移方程

2016-08-11 20:20:27 324

原创 10131越大越聪明

(原题详见UVa10131)本文主要包含以下内容:1.数学模型的建立2.递推伪代码3.具体实现代码4.总结关键字:动态规划    DAG1.数学模型的建立本题用基于DAG的动态规划的思想很好解决。而且属于起点终点不固定的DAG.(具体可以参考《算法竞赛入门》中动态规划一章,矩形嵌套问题)把每只大象视作一个个点,点i,j连通的条件是w[i]s[

2016-08-11 19:53:21 625 1

原创 10066双塔

双塔问题实际上就是在两个字符串中寻找最大公共子字符串。借由双塔问题来具体理解分析一下最大公共子字符串问题。本文包含以下内容1.数学模型的建立2.递推伪代码3.具体程序1.数学模型的建立我们可以想象有两根指针i、j,分别指向数组a,数组b的起始位置。如果当前两根指针指向的字符是相同的,我们可以把两根指针同时向后移动一位,同时公共子字符串的数目增加1.

2016-08-11 19:19:04 306

原创 完全背包----两个for循环的先后问题

这篇文章主要是讲完全背包问题中,什么情况下两个for循环的位置不能交换。在点击打开链接(完全背包问题----思想的理解)中我们提到,完全背包一维数组的实现的两个for循环是可以交换顺序的。伪代码分别如下所示:方式一:《背包九讲》基于01背包问题推导出来的,还记得和01背包一维数组实现的区别吗?f[0] =0;for    i:1->n    do  for

2016-08-10 21:21:29 1855

原创 完全背包问题----思想的理解

最近学习动态规划,在背包问题处被卡了很久,故在此处把这几天的遇到的问题和自己的理解进行一下总结。这篇博文主要介绍的是完全背包的思想,包括它的三种状态转移方程。作为引入完全背包问题的前提,附带的介绍了DAG思想和01背包问题。参考资料有《算法竞赛入门经典》和《背包九讲》。1.在《算法竞赛入门经典》中,其对完全背包问题是通过DAG的思想来讨论的。先讨论了完全背包问题,再推广

2016-08-10 19:42:48 3201

空空如也

空空如也

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

TA关注的人

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