自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十二五

新起点,新征程—为更好的农大而奋斗                                       班级:计开发一班 学号:20153654姓名:马鹏飞  2016是国家十三五的开局之年,国家提出新的发展目标,也对我们当代大学生提出了新的要求,为响应国家号召,我们应该积极投身社会发展的伟大事业。作为山东农业大学的一员,我应该首先投身农大的建设,为未来更好的农大献出我的一份力量。

2016-07-15 07:08:04 482

原创 ACM—课程总结

还记得是在王鲁老师的学习交流群了看到他帮费老师发的广告才关注到这门课,后来看到学分3.5,这诱惑真心大~然后想也没想就选上了。当我意识到我的选择意味着什么的时候费老师又给了我一次放弃的机会,然而我最后选择了坚持下去,挑战自己!一学期下来,感觉收获是很大很大的,不仅局限在知识方面很多方面都得到了锻炼。所以也是真心的觉得这课选的很值。废话不多说~下面来总结下这学期学习的内容。  第一专题:贪心

2016-07-08 18:23:57 1558

原创 ACM第四专题—图算法总结

图的基本知识   顶点:图中的数据元素称为顶点.有向图:有方向的图叫有向图.无向图:没有方向的图叫无线图.完全图:有n(n-1)/2条边的无向图称为完全图.有向完全图:具有n(n-1)条弧的有向图称为有向完全图.稀疏图:有很少条边或弧的图称为稀疏图,反之称为稠密图.权:与图的边或弧相关的数叫做权(weight).1. Relaxation(松弛操作): 

2016-07-08 18:21:50 543

原创 ACM第四次练习—1013

题意:先给出了一个表格,这个表格也表示路程和花费的模板,然后根据这个对下面的问题进行解决,然后第三行给的是n,m,紧接着就是n行,表示的是0到1的距离,0到2的距离,0到3的距离。。。。依次下去。接下来的m行表示的就是要求的起点和终点了。思路:直接用Dijkastra就ok了 稍稍做一点点的变形,要注意的本题数据比较大 在定义最大值常量的时候要注意 一开始还WA了好多遍 结果定义成cons

2016-07-07 07:47:56 331

原创 ACM第四次练习—1012

题意:n*m大小的矩形,起点在矩形的左上角, 终点在右下角,里面一个小矩形代表一个街区(block)。每个小矩形的边长都是2520, 小矩形的边有一个速度限制,范围是0~9, 如果是0表示这条边不能行驶。由上到下,从左到右,按照上图的对应的位置方式给出数据,  每一条边是  "数字"+“空格”+“符号”的形式, 数字表示这条边的限速, 符号表示这条路是单向(还分东西, 南北)的还是双向的。

2016-07-04 18:32:10 327

原创 ACM第三次练习—1010

题意:从1走到2有最短路为定值,注意到题目不是求最短路有多少条,而是,假如有一条A到B的路,而B到家的最短路比A到家的最短路要小,那么就可以从A到B,B到家,这可以算作一条路可走。求共有多少条这样的路从1点到家2。思路:先用digkstra算法求出各点到2-1的最短距离 同时存贮其它点到2的最短距离.然后记忆化搜索 从1开始 找到符合条件的路径数。感想:已经习惯了被虐的的感觉~代码

2016-07-01 22:37:23 332

原创 ACM第四次练习—1008

题意:求一个图的最大联通子图,要求每个联通分量最多只有一个环,且所求的边的权值之和最大。思路:每输入一条边,判断此边两端点是不是在同一颗树上,如果在同一颗树上,判断树是不是有环,如果有环,则不加入此边,如果没环,加入此边(合并);如果两棵树都没有环,直接合并即可,如果只有一棵树有环,可以合并,并标记,如果都有环,显然不能合并。感想:贪心+并查集,贪心不难,并查集就~代码:#incl

2016-06-29 22:48:52 320

原创 ACM第四次练习—1011

题意:虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的

2016-06-23 21:03:51 482

原创 ACM第四次练习—1006

题意:对给定的图,求出最小耗费的金额——最小生成树问题。思路:最开始的时候想用Kruskal算法,没做出来~而且Kruskal比起Prim来首先一点就是路径要排序了。接着开始用Prim,整个算法就是找一条路径如果他的一点是已搜到的一点是未搜到的且他在当前已生成的树的各点的选择中是最短的就用他。然而还是弄不出来,最后又回到Kruskal算法。把Kruskal算法基本思路贴在下面:Kruska

2016-06-20 17:40:49 317

原创 ACM第四次练习—1009

题意:在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。工作人员把上百件的衣服从商店运回到赛场,寻找最短的从商店到赛场的路线。思路和感想:刚开始最短路感觉挺难,问了下学长,又看了看群里的文件,然而我仍旧不明白,有好几种解法,都没有实践过,所以真的很难懂。这道题参考了下别人的代码,又重新看了PPT,对其他的解法也终于有所理解能运用了,这次用的是floyd解法,因为这个解法在用

2016-06-19 11:08:01 733

原创 ACM第四次练习—1005

题意:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。思路:这个题和1004差不多,就是加了一个状态,可以先判断每条路的状态,如果是修好的,就让它们的成本是0;如果没修,就让成本给出的成本。这样问题的处理就和

2016-06-18 22:25:54 311

原创 ACM第四次练习—1004

题意:某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。思路:先用快排将所有路径按照从小到大的顺序排列,然后开一个节点标记数组,初始值定为1,将排在第一个的路径的前一个节点的标记设为0。之后进行计算,凡是前后

2016-06-16 21:33:27 558

原创 ACM第四次练习—1002

题意:求给定的点之间连通的最小距离。思路:最小生成树的算法,其核心是每次取最短的边,看该边相连的两点是否在同一个集合内,若在则跳过,若不在,就把两个点合并,判断与合并都用并查集实现。感想:开始的时候将边初始化成了0,懵逼了~代码:#include#include#include#includeint f[109];double x[109],y[109];s

2016-06-14 22:31:12 351

原创 ACM第四次练习—1001

题意:有n个村庄,编号1-n,以矩阵的形式给出任意两个村庄之间的距离,然后告诉已经有q个村庄已经修好了路,问现在要打算使所有村庄都联通需要修路的最小长度。思路:构造一棵最小生成树,所以将距离排序,从小到大依次并入,直到集合数为1为止。感想:这差不多是并查集入门级的题目了,然而我还是不会~代码:#include #include using namespace std

2016-06-13 17:39:56 341

原创 ACM第四次练习—1003

题意:现有城镇道路统计表,表中列出了每条道路直接连通的城镇。目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?思路:并查集的应用问题。使用并查集合并操作将全部城镇分为N个集合,每个集合中的城镇相互连通,所以至少需要N-1条道路便可以使N个集合连通。感想;图这部分也不简单~代码:#include"stdio.h

2016-06-12 11:09:31 298

原创 ACM第三专题—动态规划总结

一.概述  动态规划的基本思想:若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。 这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。三大重要性质:

2016-06-02 11:07:00 665

原创 ACM第三次练习—1007

题意:天上掉馅饼,思路:跟之前做过的数塔题的思路有些类似,不过这是矩阵,可以这样想:建一个很大的矩阵A,那么A[i][j]表示第i秒第j位置有多少个馅饼,那么我把所有馅饼都填入表(矩阵中),这样我只要从底往上走,走到最上面一层,找到所走过的位置中馅饼之数最大的那个就是我们所求结果,这完全和数塔一样的思维。既然用到了动态规划,那么就必须思考动态规划的3个要素,其中子结构之间存在关系,并且那个递推

2016-05-29 11:18:39 469

原创 ACM第三次练习—1017

题意:一个人收集骨头。给出他的背包容量和可选的骨头的体积和价值,输出他的背包能装下的骨头的最大价值。思路:01背包问题,DP公式都类似:F[i;v] = maxfF[i-1;v];F[i-1;v-Ci] + Wi,由这个公式做变形就可以。下面再来分析一下这个公式:每种骨头仅有一件,可以选择放或不放。用子问题定义状态:即F[i;v] 表示前i 件物品恰放入一个容量为v的背包可以获得的最大价值

2016-05-22 10:57:00 320

原创 ACM第三次练习—1016

题意:在一无限大的二维平面中,我们做如下假设:1、每次只能移动一格;2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);3、走过的格子立即塌陷无法再走第二次;求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。思路:f[n]表示走n步的方案数,x[n]表示向下走的方案数,z[n]表示向左右

2016-05-16 22:29:45 341

原创 ACM第三次练习—1014

题意:我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。思路:  先看N条相交的直线最多能把平面分割成多少块当添加第N条只显示,为了使平面最多, 则第N条直线要与前面的N-1条直线都相交,且没有任何三条直线教育一个点。则第N条直线有N-1个交点。由于每

2016-05-15 22:31:35 397

原创 ACM第三次练习—1013

题意:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。编程实现在第n年的时候,共有多少头母牛?思路:依然是列举出了前几种情况,然后很快就找到了DP公式:f(n)=f(n-1)+f(n-3)。感想:这几个题都类似的~代码:#include #includeusing namespace std;int main(){   

2016-05-12 22:10:01 342

原创 ACM第三次练习—1012

题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.思路:假设用arr[i]表示2*i的方格一共有组成的方法数,我们知道arr[1]=1;arr[2]=2; 现在假设我们已经知道了arr[i-1]和arr[i-2],求arr[i],所谓arr[i],不过是在2*(i-1)的格子后边加上一格2*1的方格罢了,骨牌在这一格上横着放,竖着放,如果前面i-1块

2016-05-11 19:03:15 363

原创 ACM第三次练习—1015

题意;输入一个十进制数,把它转化成二进制数并输出。思路:很简单用数组来实现就可以,利用除2取余法。感想:会进制转化,想到用数组来存数就能解决。代码:#includeusing namespace std;int main(){ int n; int b[11]; while (cin >> n) { if (n == 0)

2016-05-09 18:49:14 363

原创 ACM第三次练习—1011

题意:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。思路:题目中没有图,去百度了下,然后简单的写了下前几个数之间可能对应的路线数就找到了DP公式:a[i]=a[i-1]+a[i-2];感想:有时候找到DP公式后题就很简单了。代码:#include #include int main() {    int 

2016-05-08 22:05:41 352

原创 ACM第三次练习—1010

题意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?思路:搜索题的感觉,前面几个数为1,1,2,3,第五个可以这样考虑:有些走法是和到第四个一样的,只是最后加了一步,这样f(5)=f(4)+x,x表示其他的走法,到第五级时不是走两步就是一步,一步刚才已经考虑过了,就是f(4),而最后是走两步的是在第三级开始的,到第三级的走法为f(3),所以f(5)

2016-05-07 22:20:53 292

原创 ACM第三次练习—1006

题意:如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?思路:此题采用动态规划从自顶向下计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后排数其中一个,向上退,倒数第二步肯定走最后排数对应的倒数第二排最大的一个(将最后对应最后步走的最大的数加起来存在倒数第二步的数组中:不理解的话先看思路在看程序),再向上推,一直推到最上面的第0步,那么a

2016-05-06 22:34:07 742

原创 ACM第三次练习—1005

题意:把给定的长方体(不限)叠加在一起,叠加的条件是,上面一个长方体的长和宽都比下面长方体的长和宽短;求这些长方体能叠加的最高的高度。思路:每块积木最多有3 个不同的底面和高度,我们可以把每块积木看成三个不同的积木,那么n种类型的积木就转化为3*n个不同的积木,对这3* n个积木的长按照从大到小排序;然后找到一个递减的子序列,使得子序列的高度和最大。感想:最大完了就最小~代码:

2016-05-05 22:22:55 323

原创 ACM第三次练习—1004

题意:求丑数,就是因子只含2,3,5,7.若一个数n是丑数,则必定有n=2^a*3^b*5^c*7^d,因此只需求出所有的丑数,对其进行排序即可。思路:每个数都可以分解成有限个2 3 5 7 的乘积,dp方程为 dp[i]=f[i]=min(f[a]*2,min(f[b]*3,min(f[c]*5,f[d]*7)))找到比f[i-1]大且最小的数用到下面的方法:    a表示f[]

2016-05-05 08:54:48 370

原创 ACM第三次练习—1003

题意:求最大递增子段和。思路:类似最长递增子序列的想法,只不过这里求的是到第i个元素时,最长递增子序列,各个元素的和。求最大的那个值。感想:这几个都类似的。代码:#include  #include  #include  using namespace std;    int a[1005],dp[1005];  const int inf = 999

2016-05-03 22:33:16 357

原创 ACM第三次练习—1002

题意:求两个字符串的最长公共子序列。思路:动态的方程在第一个元素的相等的时,dp[0][0] = dp[-1][-1] + 1, 天哪,这肯定就会出错了。在处理时可以选择字符的读取从第一个位置开始,或者把 i 号字符的状态存储到i+1号位置去,这样就从1号开始处理了,判定是就是 s1[i-1] == s1[j-1] ?感想:弄了很久,熟练这个词太难~代码:#include

2016-05-02 20:39:55 423

原创 ACM第三次练习—1001

题意:给出序列a [1], a [2], a [3] ...... a [n],计算子序列的最大总和。思路:最大子序列是要找出由数组成的一维数组中和最大的连续子序列。方法是:只要前i项和还没有小于0子序列就一直往后扩展,否则丢弃之前的子序列开始新的子序列,同时记录各个子序列的和,最后取他们中的最大值。感想:第一道动态规划题,感觉要考虑的东西很多,脑子有些不都用了~代码: #

2016-05-01 11:35:57 291

原创 ACM第二专题—搜索总结

概述:搜索分为广度优先搜索(BFS)和深度优先搜索(DFS)两类,前者用队列实现,后者用递归实现,后者用于列举所有可能情况,前者用于求最短路径。可以用二分搜索和三分搜索解决一些比较简单的搜索问题。例题:1.求连通块(DFS)部分代码:voiddfs(intr,intc,intid){    if(r0||r>=m||c0||c>=

2016-04-23 22:26:39 411

原创 ACM第二次练习—1023

题意:输入8个数 表示 图中a b c d e f g h的位置的值只能为1-8的数 然后相邻的不能是连续的数,即绝对值不能为1,有些数是0,将为0的填成1-8中未使用的数。有多少种方法,如果仅有一种,输出它;有多种或没有, 按样例中那样输出。思路:从第一位开始搜索,位上有数字就跳过,如果没有就搜索:A-B , A-C, A-D   B-A, B-C, B-E, B-F  

2016-04-23 18:19:50 300

原创 ACM第二次练习—1019

题意:在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。思路:X(j)表示一个解的空间,j表示行数,里面的值表示可以放置在的列数,抽象约束条件得到能放置一个皇后的约束条件(1)X(i)!=X(k);(2)abs(X(i)-X(k))!=abs(i-k

2016-04-22 22:35:11 340

原创 ACM第二次练习—1026

题意:自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视。据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品———HDU免费七日游外加lcy亲笔签名以及同hdu acm team合影留念的机会。所以全球人民前仆后继,为了奖品日夜训练茶饭不思。当然也包括初学者linle,不过他太笨了又没有多少耐性,只能做做

2016-04-21 22:24:13 346

原创 ACM第二次练习—1013&1014

题意:在一个N层高的楼有一个奇怪的电梯,在每一层只能上升或下降一个特定的层数,中间不会停止,在给定的条件下,问能不能到达指定楼层,可以到达的话返回转操作次数,不可以的话返回-1。思路:这个题问能不能实现,所以用最快的速度找到可行解就可以,所以用广度优先搜索。感想:第一道广搜题,有很多点不会。代码:#include  #include  #include  #inc

2016-04-19 22:42:40 347

原创 ACM第二次练习—1011

题意:在一个网格矩阵中寻找不同油矿 , 当遇到“@”时 , 这个点上 下 左 右 斜角上是“@”的点属于同一个油矿。找到最多一次能连接几个油矿。思路:深度优先搜索,递归。感想:虽然是个讲过的例题,但自己写出来也是有自豪感。代码:#include #include #include using namespace std;char grid[101][10

2016-04-18 22:30:50 325

原创 ACM第二次练习—1017

题意:有一瓶体积为S的可乐,另外有两个空的体积分别是n,m的杯子,问:能否平分可乐,如果能输出最少倒多少次才能平分。思路:明确目标状态是有两个杯子都是S/2,那么,只要找到这状态就行,可从开始状态出发,把每一种出现的状态都找出来,并保存,直到找到这状态.当然,重复状态要过虑。用到的是广搜。感想:例题不多说。代码:#include  #define

2016-04-18 17:50:05 295

原创 ACM第二次练习—1008

题意:A有1数m,B来猜.B每猜一次,就说太大,太小或对了。问B猜n次可以猜到的最大数。 思路:猜n次,你能猜到的最大数的数为2^n-1.我们也可认为,在数1到2^n-1间,我们都可以在n次内猜出来。感想:也许这个题也能用二分,但是我想不出来。代码:#include#includeusing namespace std;int main(){ int n,t

2016-04-16 16:34:21 311

原创 ACM第二次练习—1005

题意:输入车的长l和宽w和当前所在街道宽x和转弯后街道的宽y;计算车能不能拐过这个弯,能输出Yes,不能输出No。思路:首先需要推到一个公式,设i为汽车最右端点与拐点的水平距离,h为汽车头离拐点最高的距离,汽车内侧与墙角所成的角度为a;           则有:i=l*cos(a)+w*sin(a)-x;h=s*tan(a)+w*cos(a);           可以发现h随a先增

2016-04-14 08:35:29 588

空空如也

空空如也

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

TA关注的人

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