自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ACM总结报告

ACM总结报告   算法设计  姓名:杨加勇学号:20143617专业:计算机2班指导老师:费玉奎     说是报告,其实更算是个总结,这学期这门选修课所学知识的一个大致总结。还是开始选择这门课时所说的,并无后悔或者惋惜一说,算法或许在以后一点也用不到,这个只是或许一直荒废,我不考研,也不去参加什么竞赛,工作也只是将关于计算机的作为一个过渡,我只

2016-06-29 08:17:32 802

原创 总结四

这个专题讲的是图论。首先是图的存储方法,一个是利用二维数组的邻接矩阵的方式,但限制是点不能很多的,边可以稠密的图。另一个是邻接表,标准的应该是用指针式的链表存储,为了方便和运行速度,修改成结构体的数组来存储,运行速度要快,而且更加方便,它的限制就是边不要太多,点数可以很多的图。然后就是并查集的算法,也可以算式个简单的算法,但主要的还是为了为下面的问题铺垫。一个是最小生成树问题,有2个算法,一个是p

2016-06-29 08:12:30 305

原创 1005

题目编号:1005题目大意:  省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。解题思路:典型的并查集算法,根据并查集的模版就能算出来,不是很难的题。做题感想:坚持就是胜利!

2016-06-29 08:04:57 329

原创 1010

题目编号;1010题目大意:一个人回家,从办公室穿过一个森林,森令有很多路,要求每次走到一个新的节点他离家的距离更近,求他可以走的路的条数。解题思路:这题不是很简单,根据题意可以分析是分两阶段来求解的问题。首先用dijkstra算法求出最短的距离,然后根据搜索里面的方法求出路的条数。一开始还是和以前一样,结构体,排序等等,不过这次的算法是讲优先队列的元素加入,由于是排序好的,所以取的路的距

2016-06-29 08:00:04 382

原创 1004

题目编号:1004题目大意:给出任意两城市之间距离,求最小生成树。解题思路:看题目也知道是水题了,直接套模版并查集的函数。先创建结构体然后排序,如果没有联系的两个城市,则加入距离,并入集合。最后把输出结果。感想:奋斗,做做水题凑凑数。#include#include#includeusing namespace std;int map[101][101];int mark[1

2016-06-28 22:20:27 304

原创 1006

题目编号:1006题目大意:一个人维护道路,但是因为费用的缘故,所以只能维护部分的。求用最小的费用来维护道路,使这些道路把所有的城市连通。解题思路:不错,和前面的差不多,很是典型的求最小生成树,与并查集的算法结合来求解。还是前面那一套,结构体,排序,合并,求值。还用 的Kruskal算法。感想:没啥好说的啦。。。#include#includeusing namespace s

2016-06-28 11:55:23 491

原创 1016

题目编号:1016题目大意:有N个城市,有道路连通,权值是安全系数,给出此人所在城市和想去的城市,然后求一条安全系数最小的路。解题思路:找最小的路用的floyd算法,但有区别,因为这个这个是权值相乘,不是相加,需要改变,输出方式也需要保留,最好是用C语言输出。做题感想:没啥想说的。。。。赶紧结束吧#include #include #include #define N 10

2016-06-28 07:45:25 283

原创 1002

题目编号:1002题目大意:简单的说,就是把用权值和最小的边把若干点连起来。解题思路:这是一到很典型的并查集和最小生成树的题目。我比较喜欢KRUSKAL算法来做最小生成树的题。首先创建个结构体,里面是2个点。然后一个函数,求这2个点之间的距离,也就是权值,然后重载运算符,排序为按照权值从大到小。而后就是几个固定的函数了,合并集合的函数,求父节点的函数,初始化节点的函数。然后根据题意输入数据

2016-06-27 22:29:37 348

原创 1001

题目编号:1001题目大意:有N给村庄,利用二维数组给出相对村庄的距离的权值,求最小生成的最小权值。解题思路:算是个水题吧,根据老师上课讲的kuskal模版很容易套用求解。kuskal算法是按边权值大小求最小生成树,比较简单。很固定的算法,创建结构体,然后比较函数来排序利用函数。首先初始化,创建数组来存储距离的权值,按照上课模版套用算法,然后输出结果即可。解题感想:坚持到一半以上就OK

2016-06-27 22:13:52 361

原创 1023

题目编号:1023题目大意:也一群人在一个体育馆找位置,体育馆座位有300且环绕成一个圈。给出若干两个人的距离,表示B在A的顺时针开始的距离值。求给出的若干关系不正确的个数,也就是后来的座位与前面的有冲突。解题思路:这个题目是典型的并查集问题,只是对比以前的模版有点区别,这道题的解题关键也就在合并的函数上了。首先输入,然后进入函数,假设是A和B两个人。合并A,B时,假设A,B属于不同的树,

2016-06-26 12:19:27 300

原创 1008

题目编号:1008题目大意:给一个带权值的图,求权值最大的连通子图,要求最多里面有1个环存在。解题思路:这道题考的是并查集,但在基础之上有所添加点难度。首先,两个独立的集合,要想合并,先看对方是否有环存在,如果都有环,那么就不能合并,如果只有1个有或者都没有,可以合并了就。基于此,大体框架是有了,代码就好写了。代码有3个数组,一个表示下标为i时的集合,一个标记此下标下的集合是否存在环,一个

2016-06-22 10:54:41 360

原创 1011

题目编号:1011题目大意:一个人先去一个相邻的城市坐车,然后去自己想去的若干地方,这地方有几个是相通的路,求需要的去某个地方的最短的时间。解题思路:这道题很复杂,我一开始套最小生成树的思路然后再加上变化,也没弄出来。我看到了老师的解题代码,于是根据老师的思路树梳理一遍。首先需要一个结构体数组,数组的值的内容是此标号到下个标号值,相距的时间和此相同标号到下个不同标号的结构体指针。一开始初始

2016-06-19 11:08:49 261

原创 1009

题目编号:1009题目大意:给定编号从1到N的路,求通过的最短时间。解题思路:根据题意,每两个街道之间应该最多是一条路,否则时间会不同,那就没有意义了。我选择用二维数组来表示图。首先,初始化,把所有的路全设为无穷大,然后再根据题目添加道路的权,也就是时间。后面,也就是解题的关键,找到从1到N的最短时间。我用一个函数来实现的。首先创建2个数组,1个表示从1开始到N的最短时间,另一个1起到标记

2016-06-18 10:51:09 303

原创 1003

题目编号:1003题目大意:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不      一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?解题思路:题目大意说直白点就是求可以最少多少条线把子连通图连起来使其成为一个大的连通图。这道题用并查集的方法将每个子连通图表

2016-06-12 11:12:48 583

原创 总结三

感觉好快,一下子又到了总结的时候了,这个栏目的主题是动态规划,顾名思义,难点在规划上。老师一开始从最长上升子序列入手开始讲解,中间是各种类型的改头换面的动态规划,最后是背包问题收尾。总的感觉,难,难在想不到,难在抽象上。首先,需要对数组有充分的认识,当听完动态规划,我当时就懵了,原来数组可以这样子用!把一个数组的维数分解开来,这维表示一个元素,那维表示另一个元素,当然与传统的用法是不一样的,这

2016-05-24 21:49:37 244

原创 1008

题目编号:1008题目大意:给你一个二维数组,从左上角走到右下角,每个格子里面有唯一的值,有正数有负数,每次只能向下移动一格或者向右一格或者向右移动到行所在列的i倍列,求最大和解题思路:这个题目的解决也是根据背包的套路来的,当然因为里面有新颖的走法,所以需要根据不同的情况来描述问题。首先创建2个数组,一个存地图,一个存和。这里有几个细节需要说一下,为了循环需要,在1-N和1-M里面的地图来

2016-05-22 11:30:45 386

原创 1007

题目编号:1007题目大意:有一个数组0-10,一个人站在5的位置上,它一秒移动一个单位,给定N组数据,表示第i秒有1个馅饼掉落在j位置上,求他能接到的最多的馅饼的数量。解题思路:这是个典型的动态规划问题。如何解决呢,我们一个想到背包问题,如何套用里面的思路看看能不能求解。其实如果仔细做这道题,你会发现就是个背包问题,只是换汤不换药,而且加了点难度罢了。首先创建一个数组,二维的,第一个下标

2016-05-22 11:04:34 313

原创 1023

题目编号:1023题目大意:一个人要报考大学,需要交纳一定的费用。现在给定一定的费用和N所大学报考所需费用和录取几率,求至少收到一份大学offer的概率。解题思路:首先要考虑的是,至少收到一份的概率,那么很简单想到一份都收不到的概率,然后用1去减就OK了,所以主要是求得一份offer都收不到的概率,所以在输入每个学校的入选概率时,数组存储的是没有选中的概率,然后这个问题就可以套01背包的形

2016-05-22 10:37:55 309

原创 1001

题目编号:1001题目大意:给定几个数,让你从头开始加,到某个数是加到前面还是独立出来有两个选择,求最大的和。解题思路:根据题目的要求,必须有3个形参,一个是最大的和,一个是起始位置,一个是结束位置,而解题的关键就在于如何比较取舍这最大的和。首先一个循环,然后输入数据,里面开始判断是不是第一个数据,如果是就初始化上述的3个形参;如果不是,判断一下暂时储存的和对于目前的输入的数的符号,假如目

2016-05-21 23:40:21 282

原创 1002

题目编号:1002题目大意:给定2个字符段,求它们最长的公共字符数。解题思路:这题的解题方法类似于课上讲的最长上升子序列问题,都是用数组来存储答案。首先,利用2个string类型的形参输入,然后求他们的长度,保存起来。创建一个足       够大的数组,每组数组操作之前清0先,然后一个双重循环,外面是第一个字符串的长度,里面的第二个字符串长度,最里面是个条件语句,如果第一个字符串的字符和第

2016-05-20 21:15:06 304

翻译 1019

题目编号:1019题目大意:给一定数量一定价值量的物品,尽量平分质量物品给A和B,要求A不小于B。解题思路:首先,用一个数组来存储每个物品的质量,然后算出总共的质量。下面才是问题的关键。首先一个外循环,以物品的总数量为结束点,里面的内循环,用另外一个数组,来表示当质量为某数时的最大数,类似于背包问题。当输出时,输出质量为一半时数组地址里面数组的值,比较大小后再选择输出。做题感想:没啥想

2016-05-19 23:48:53 249

原创 1004

题目编号:1004题目大意:一组数,第1-7个是1-7,从第8个开始,看是否能够被2,3,5和7分解,求这个数组。解题思路:这个题意理解了很好做题,按照原题什么卑微的数,我觉得就永远做不出来了,忒抽象了。这个题目的主要问题在于求这个数组,数组先求出来,作为预处理部分,那                      么后面的输出就很容易了。首先创建个足够用的数组,然后创建,a,b,c,d4个形

2016-05-19 21:09:54 261

原创 1003

题目编号:1003题目大意:这个和最长上升子序列类似,不过有区别。最长上升子序列是求最长的数的个数,这题是求最大的上升子序列的和。解题思路:和老师上课讲的最长上升子序列类似的求法,不过有所改动。首先建立2个数组,一个储存给定的数,一个储存到N时最大的和,与最长子序列区别在于它储存的是到N                      的最多的个数,也就是最长的那个序列的数字的个数。利用2个循环

2016-05-19 12:50:53 296

原创 1017

题目编号:1017题目大意:01背包问题解题思路:就是按照老师上课讲的思路A的代码。利用一维数组来实现背包问题。首先创建2个数组来储存体积和质量,再弄一个数组,下标表示质量为下标的数值时数组表示最大                     的价值量。首先初始化0,一个双重循环,注意第二个循环是递减的,这是关键,然后讨论取与不取之间取大数就行。最后输出即可。解题感想:没啥感想,上课听懂,

2016-05-15 14:46:50 361

原创 1016

题目标号:1016题目大意:一个人在无限大的方格地图中行走,每次只能走一步,但走过的格子就不能走了。方向上不能往后,比如你面向北,那么你就不能向南走。如果一步不一样那么就算新                       的走法。求走N步一共的走法,解题思路:这个题和之前的母牛生小母牛和走楼梯异曲同工,都是先找找规律然后递归就可以了。走第一步的时候,有3种走法,走2步,有7种。步数走>=3时

2016-05-15 14:15:08 254

原创 1006

题目编号:1006题目大意:数字金字塔,从顶到最后一层,每次只能走左下和右下,求到最后一层的和最大是多少。解题思路:书上的解法是按动态规划的递归方法实现的,我是按照方法2,然后改进了下实现的。首先将金字塔倒过来,计算之前的最后一层也就是现在的第一层的数和第二层的                       相邻的数字之和,找到比较大的一个替代上一层的值,然后循环,直到以前的顶层第一个数为止

2016-05-15 13:42:37 281

原创 1014

题目编号:1014题目大意:有一张白纸,用N条折现来切割,求最多能把白纸分成几部分?解题思路:这道题,怎么说呢,我没用递归什么的,也没用什么算法,纯粹的数学找规律,得到一个函数就解出来了。做题感想:有时候想算法还不如数学找规律来得快我觉得。#includeusing namespace std;int main(){ int num,k; cin>>num;

2016-05-11 22:55:32 245

原创 1015

题目编号:1015题目大意:给你一个十进制的数,然后用二进制输出。解题思路:我在大一做过用十六和八进制输出结果的,是用函数的,然后我就想有没有用二进制输出的C++自带的函数呢。。。。到底是没找到,然后用递归来实现了,不是很难                        的递归。做题感想:没啥想说的,就是有点疑问,有没有自带二进制的函数呢?#includeusing namespac

2016-05-11 22:26:58 235

原创 1013

题目编号:1013题目大意:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?解题思路:水题一个。不过我现在还纳闷。。。为什么没有算上生小母牛那头大母牛呢。解题感想:不知道为什么,提交了好几次都是错误,最后也不知道怎么就AC了,感觉都没怎么改动。。。郁闷啊。#includeusing namespace

2016-05-11 22:21:04 221

原创 1012

题目编号:1012题目大意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,解题思路:感觉是课上讲的题目的简化版,水题一个,简单的递归就可以实现了。但注意一下数值,感觉需要LONGLONG格式。感想:没啥感想。#includeusing namespace std;long long arr

2016-05-10 21:11:00 237

原创 1011

题目编号:1011题目大意:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数解题思路:大一第一次比赛的题目,老师专门来出来讲过,印象深刻,当时的难题,现在的水题。与上题比较,区别在于开头部分取值的多少。同样预处理一下,存在数组里。感想:没啥好说的。#includeusing namespace std;int main(){

2016-05-10 21:07:46 234

原创 1010

题目编号:1010题目大意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法解题思路:瞄一眼就知道是水题了,简单的递归就可以实现。但是我用的是递归,一直超时,为了避免这种问题,选择首处理储存在一个数组里面是一个好办法。做题感想:吐槽一下,递归很高大上,但就是AC不了,还是首处理的数组好啊。#includeusing namespace s

2016-05-10 21:03:43 273

原创 总结二

又到了收获的时候了,忙忙碌碌又是几星期,这几星期除了这个周四早上睡到9点46起来,其他都是7点左右,感觉睡懒觉真是人间天堂啊。         好了,言归正传,总结一下深搜和广搜吧。         做了那么多题,感觉用的广的,而且更加实用,更是很通用。一般的地图,寻找解什么的都是深搜。深搜本身靠递归,效率不是很高,关键在于剪枝,就是根据题意,比如超过边界直接结束,走过或者搜索过直接结束,

2016-04-24 22:31:45 277

原创 1020

题目编号:1020题目大意:你给1-N个数围成一圈,要求任意两数之和为质数而且第一个数为1,求这样的组合。(0解题思路:变形的深搜题。首先,判断素数,由于题目要求的数字不大,可以直接创建个一位数组,判断1-38中哪个是素数哪个不是,速度快而且简单。解决这道题目,往深搜一                     般写法靠近就行了,只是披上一层有点不一样的外衣罢了。先创建个数组,储存此数是否被

2016-04-24 17:19:46 308

原创 1009

题目标号:1009题目大意:连连看。给你一个数组表示地图,0表示空,给N组2对坐标,判断是否可以消去,只能从中间空的过,不能从外面走。解题思路:这题是个复杂的深搜,主要难度在于如何剪枝判断。我们先这样想,一个人走路,在空地上走,他可以往前后左右四个方位,他需要到达离他有段距离的某地。他应该                        先判断那点在他的什么方向上,然后有2种方法:先走再拐弯

2016-04-23 23:33:45 345

原创 1006

题目标号:1006题目大意:有两个不相交的线段,端点分别为AB,CD有个人从A到AB的某点到CD的某点然后到D,给定A,B,C,D的坐标,而且给AB段速度为p,CD为q,其他为r,求最少的时间。解题思路:根据题意,这是一个复杂的三分算法题。首先,建立一个结构体储存坐标。然后输入坐标ABCD和各段速度pqr。建立一个函数,用math里面求随机坐标系上两点的距                

2016-04-22 22:36:26 266

原创 1005

题目标号:1015题目大意:骑车直角拐弯。给4个量,车宽和车长,要拐之前的路的宽度和路拐之后的宽度。求汽车能不能拐过去。解题思路:猛地一看,这更像个物理数学问题,根据第一感觉,我们应该可以用函数来表示出来汽车能不能拐的一个关键量,设车身与拐之前的路的角度为A,那么可以列出来2个                   关键函数:s = l * cos(θ) + w * sin(θ) - x;h

2016-04-22 16:42:36 247

原创 1007

题目编号:1007题目大意:给N节绳子,需要分成K段,给定N节绳子每节的长度,求能分得K段最长是多少。解题思路:这个不是很难,典型的二分查找。首先建立数组存储绳子长度,然后二分开始查找,建立一个判断函数,如果在当前mid条件下,能够达到K条则输出,不能达到继续二                    分循环查找下去。解题感想:一直Getting complication error i

2016-04-21 00:10:44 488

原创 1004

题目编号:1004题目大意:一个人射箭,在(0,0)点开始射箭,往(x,y)处射,有个g的重力加速度,给你个初速度v求最小的射中角度。解题思路:额,初看题目,怎么说呢,不像是编程题,更像个物理数学计算的题目,看给出的输入例子,可以看到小数点后面有好多。这是个信号,要你保留到小数点几位几位,                       而且很容易让人联想到用二分查找的方法来求解。至于求解过程

2016-04-20 11:17:34 335

原创 1015

题目编号:1015题目大意:一个8*8的棋盘,骑士只能走日字型,求从给定的起点和终点需要走的最少步数。解题思路:没什么特别的,就是广搜。创建结构体,内涵行列和步数,用队列来进行存储。先表示出来起点终点的行列坐标,然后广搜即可。做题感想:看到这个题,我一下子想到老师的例题了,不过有所区别,老师的是给定的棋盘大小,这个是固定的,然后稍微修改就可以了,方法都是一般的广搜,剪枝也大同小    

2016-04-20 10:37:36 269

空空如也

空空如也

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

TA关注的人

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