自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ACM课程总结

ACM课程总结本学期所学的ACM已经算是告一段落了,总体来说,对它的感觉是有喜有悲,喜的是从这里学到了对待问题的思维方式,悲的是ACM的相关题目还是不算容易,一道简单题有可能还得花上一些时间方可AC,不过A过一道题后的喜悦是不言而喻的。废话不多说,下面来对本学期的ACM课程做个总结。Part 1 习得的知识一、 贪心算法 一)基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最

2016-07-08 12:05:58 445

原创 图算法总结

图算法总结图 (Graph) 是一种复杂的非线性数据结构,由顶点集合及顶点间的关系(也称弧或边)集合组成。可以表示为: G=(V, {VR}) 其中 V 是顶点的有穷非空集合; VR 是顶点之间关系的有穷集合,也叫做弧或边集合。弧是顶点的有序对,边是顶点的无序对。 度:无向图中顶点 v 的度是和 v 相关联的边的数目,记为TD(v)。 入度:有向图中以顶点 v 为终点的弧数目称为 v 的入度

2016-07-08 12:00:22 647

原创 图算法—Problem M

图算法—Problem M 题意 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突。解题思路 (1)弄清题意,找出出现冲突的位置,判断冲突很简单: 就是当两个人在同一行坐同时, 他们到根节点的距离差值正好是他们之间的距离差值。如果和测试数据不同,此时就出现了冲突了。

2016-07-06 22:35:18 489

原创 图算法—Problem J

图算法—Problem J 题意 题目大意是给一个图。起点为1,终点为2;然后点a到点b是合法的判断是当b存在一个到终点的距离小于a到终点的最小距离。求从起点到终点的路径数。解题思路 我的做法是dijk +DFS。具体为: 1、以终点 2 为起点 dijkstra; 2、直接DFS记忆化搜索。 感想 已经做不动了······ AC代码#include<cstdio>

2016-07-06 12:36:27 283

原创 图算法—Problem H

图算法—Problem H题意 求一个图的最大连通子图,要求每个联通分量最多只有一个环,且所求的边的权值之和最大。 解题思路 每输入一条边,判断此边两端点是不是在同一颗树上,如果在同一颗树上,判断树是不是有环,如果有环,则不加入此边,如果没环,加入此边(合并); 如果两棵树都没有环,直接合并即可;如果只有一棵树有环,可以合并,并标记; 如果都有环,显然不能合并。 感想 最大连通子图问

2016-07-05 12:14:33 355

原创 图算法—Problem K

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

2016-07-04 12:04:15 234

原创 图算法—Problem I

图算法—Problem I 题意 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? 解题思路 本题是图的最短路径的一个应用,从题目中可以分析得出是求两点间的最短路径,所以我们可以选择Floyd算法。 感想 最短路之最短路···

2016-07-02 22:20:20 2386

原创 图算法—Problem F

图算法—Problem F题意 在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使每个岛屿都间接或直接与其他岛屿相同时所用的的最短时间(只有修完一个桥后才可修下一个桥)。//简言之就是求最小生成树。 解题思路 该题图为稀疏图,还是最小生成树问题,用Kruskal算法解决。 假设WN=(V,{E})是一个含有n个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为

2016-07-01 12:05:38 244

原创 图算法—Problem E

图算法—Problem E题意 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。 解题思路 不多说,还是最小生成树问题。用的Kruskal方法。 感想 最近忙着复习,哎,事情好多,

2016-06-30 12:44:51 212

原创 图算法—Problem D

图算法—Problem D 题意 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 解题思路 依旧是最小生成树问题,这里用Kruskal算法,把边按权值从小到大到大排好序,每次取最小的边,用并查集的思想查

2016-06-25 19:30:20 286

原创 图算法—Problem B

图算法—Problem B 题意 给你一些点的坐标,然后求连通这些点的最小线段的长度。 解题思路 最小生成树问题。需要对这n个点全部处理一下,求出每对点之间的长度,然后存入邻接矩阵。然后就可以了。本题主要用kruskal算法 和用并查集来判环。 感想 虽说是最小生成树入门题,但是也挺麻烦。 AC代码#include <iostream>#include <algorithm>#in

2016-06-17 11:09:57 250

原创 图算法—Problem A

图算法—Problem A 题意 题目大意就是输入一个N表示有n个村庄,然后输入n行n列,第i行j个元素表示i村庄离j村庄的路数多远(所以i行i列一般为零),然后输入q,表示q条路已修,然后输入q对数就可以了。(权值为零)。求使其n个村庄最小的连通值。 解题思路 最小生成树问题。看PPT上有Prim算法和Kruskal算法两种。这道题采用的是Prim算法。写的过程中,需要注意的一点就是可能会

2016-06-15 11:05:52 274

原创 图算法—Problem C

Problem C问题描述 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 解题思路 典型的并查集问题。相互连接的城市构成一个集合,只需要判断集合个数即可知道要修多少条路。集合个数的判断也可以根据每个集合只有一

2016-06-12 11:04:07 252

原创 动态规划总结

动态规划总结小序: 最近一个月被动态规划折磨的不要不要的,然而期限已到,该专题被关闭,所以到了写份总结来复习与小结一下动态规划。总体说来,感觉DP的大部分题目都并不易做,虽然有些题目被人称作水题、入门题,不管怎么说吧,基本上关键的就是找状态转移方程了,这也是题目的难点所在。那好,本博客就来复习一下动态规划的基本内容和几类经典题目。基础知识: 什么是动态规划呢,简单来说,动态规划是解决多阶段决策

2016-06-01 23:08:12 357

原创 动态规划—Problem R

动态规划—Problem R 题意 题意:给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量。要求出重量最少能装满钱罐时的最大价值。 解题思路 完全背包问题。关于完全背包嘛,即在01背包的基础上,每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然按照解01背包时的思路,令f[i]

2016-05-30 21:58:02 506

原创 动态规划—Problem G

动态规划—Problem G 题意 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手

2016-05-30 21:41:21 284

原创 动态规划—Problem H

动态规划—Problem H 题意 穿过幽谷意味着离大魔王lemon已经无限接近了!可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个机关。要知道,不论何人,若在迷宫中被困1小时以上,则必死无疑!可怜的yifenfei为了去救MM,义无返顾地跳进了迷宫。让我们一起帮帮执着的他吧!命运大迷宫可以看成是一个两维的方格阵列,如下图所示:

2016-05-26 21:38:20 427

原创 动态规划—Problem Q

动态规划—Problem Q 题意 收集骨头。一个人有一个背包,背包容积是V,不同的骨头有不同的体积和价值,求收集到骨头价值的最大值。 解题思路 背包问题。剖析下问题,“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为dp[i-

2016-05-12 20:37:16 252

原创 动态规划—Problem P

动态规划—Problem P 题意 在一无限大的二维平面中,我们做如下假设: 1、每次只能移动一格; 2、不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走); 3、走过的格子立即塌陷无法再走第二次; 求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。 解题思路 递推。关键是找出递推公式。现在用数组dp[n]表示走

2016-05-10 18:29:11 249

原创 动态规划—Problem C

动态规划—Problem C 题意 下棋。每颗棋子有不同的数值,要求只能从数值小的棋子走向比它大的棋子,如果下一颗棋子比它小就不能继续走了。求此过程中所走棋子代表的数的最大值。 解题思路 题目一大串,说白了就是个求最大递增子序列和。明白问题的实质后再做就不难了,明确状态方程就行:sum[j]=max{sum[i]}+a[j]; 其中,0<=i<=j,a[i]#include<iostream

2016-05-10 15:02:26 489

原创 动态规划—Problem D

动态规划—Problem D 题意 有一组数,它们的共同特征是它们的因数只含2,3,5,7,有5842个数,要求输入一个数输出对于位置的数是多少。 解题思路 分析题意,要做的事就是求出所有这些符合条件的数,然后输出就不难了。若一个数是Humble数,则它的2、3、5、7倍仍然是Humble数。设dp[i]为第i个Humble数,则dp[t] = min(2*dp[num2], 3*dp[nu

2016-05-08 16:56:54 204

原创 动态规划—Problem E

动态规划—Problem E 题意 有n种长方体,每种长方体都有无限多个,问用这些长方体最高能摆多高。要求是在下面的长方体的长要大于上面长方体的长,宽大于上面长方体的宽。 解题思路 读题发现,其实就是求最长的子序列问题,单调递减序列,但是复杂之处在于如何对长宽表示以及排序。在这里不妨采取让长和宽排序按递减的方式把问题转化为求最长单调递减序列。 感想 感觉还是有难度的,特别是在长和宽处理时

2016-05-07 22:39:24 547

原创 动态规划—Problem O

动态规划—Problem O 题意 将一个十进制数转换为二进制数。 解题思路 采取比较传统的方法,对输入的数除以2取余,存放到数组里,除到1时存入1结束。 感想 昨晚A的忘记写博客了,额~ AC代码#include<iostream>#include<cstring> using namespace std;int main(){ int n; int a[20

2016-05-07 18:03:54 257

原创 动态规划—Problem N

动态规划—Problem N 题意 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 解题思路 递推。先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了(n-1)+1;折线也是同理,f(1)=2,f(

2016-05-05 09:59:26 336

原创 动态规划—Problem K

动态规划—Problem K 题意 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。 解题思路 题目所述,但并未发现图,于是百度找到了原题与图(原图已附上)。分析后发现与前几个做的题目类似,思路同样也是递推,而且dp[1=1.dp[2]=2,同样的递推公式为:dp[i]=dp[i-1]+dp[i-2]。然后根据输入的a,b,相应输出dp

2016-05-04 16:41:39 207

原创 动态规划—Problem L

动态规划—Problem L 题意 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,求出铺放方案的总数。 解题思路 递推,假设用dp[i]表示2*i的方格一共有组成的方法数,我们已知dp[1]=1,dp[2]=2。现在假设我们已经知道了dp[i-1]和dp[i-2],再求dp[i],不过是在2*(i-1)的格子后边加上一格2*1的方格罢了,骨牌在这一格上横着放,竖着放,如

2016-05-03 14:08:45 226

原创 动态规划—Problem J

动态规划—Problem J 题意 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,求出共有多少种走法。 解题思路 递推问题,类似斐波那契数列。分析题目,可得到: dp[1] = dp[2] = 1; dp[n] = dp[n-1] + dp[n-2] (n > 2)。 创建dp数组,把到达每一层的走法放进去,最后根据输入相应输出即可。 感想 难度一般

2016-05-02 14:35:51 203

原创 动态规划—Problem M

动态规划—Problem M 题意 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛? 解题思路 类似斐波那切数列问题,简单递归了。 感想 水题了,不太明白意图。只好随便写写了。 AC代码#include<iostream>using namespace std;int main(){ int

2016-04-29 19:37:51 226

原创 动态规划—Problem F

动态规划—Problem F 题意 数塔问题,有数塔(类似于三角形数字但稍有不同),要求从顶层走到底层,若每一步只能走到相邻的结点,求经过的结点的数字之和最大是多少。 解题思路 可以采用从下往上的思路,即从最后一排的数向上递推,这时候的状态方程为:dp[i][j]+=dp[i+1][j+1],dp[i+1][j];按照这种方式求最大值就可以了。 感想 算是入门的题目吧,比较简单。 AC

2016-04-29 17:06:19 238

原创 动态规划—Problem B

动态规划—Problem B 题意 最长公共子序列问题。简而言之,给出两段字符串,找出它们公共子序列的最大值。 解题思路 设c[i][j]为字符串a的第i个字符与字符串b的第j个字符为止的最长公共子序列长度,那么有两种情况: 1. 当a[i] == b[j]时,c[i][j]应该是前一个状态的最长公共子序列长度 + 1,而前一个状态是c[i - 1][j]呢,还是c[i][j - 1]?

2016-04-29 16:35:58 270

原创 动态规划—Problem A

动态规划—Problem A 题意 最大子段和问题,给出n个数,求n个数连续子段中和最大值以及构成这个最大值的数字是从第几个到到几个,如果同一个最大值有多种情况,则输出第一组情况即可。 解题思路 用一种简单方式来写就是,定义三个状态变量,分别表示当前输入的数值,之前数据总和,和要求的最大值,同时也有相应的位置变量,接下来就是输入数据并判断条件,在此过程中相应的对位置做相应改变。最后求得后按要

2016-04-29 14:29:49 218

原创 搜索总结

搜索总结搜索简介 搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。 相比于单纯的枚举算法有了一定的方向性和目标性。算法是在解的空间里,从一个状态转移(按照要求拓展)到其他状态,这样进行下去,将解的空间中的状态遍历,找到答案(目标的状态)。 搜索分类 在搜索这一部分主要讲的有入门的如二分、三分,BFS,DFS,还有一些结合其他的比较综

2016-04-23 18:36:17 200

原创 搜索—Problem_1016-Red and Black

搜索—Problem_1016-Red and Black 题意 简单概括,给一幅图,算出有从起点出发最多能走多少步。 解题思路 用DFS。从@开始所有向四个方向走,查看。的数量,当走到边界返回,碰到#返回。 感想 算是水题吧,其实DFS和BFS都可以。 AC代码#include <stdio.h>#include <string.h>int n,m,cnt;char map[3

2016-04-23 15:22:40 203

原创 搜索—Problem_1015-Knight Moves

搜索—Problem_1015-Knight Moves题意 国际象棋中Knight的移动问题。 /先简单介绍下knight:在国际象棋中Knight称“马”或“骑士”,Knight的走法和中国象棋中马相同,同样是走“日”字,或英文字母大写的“L”形:即先向左(或右)走1格,再向上(或下)走2格;或先向左(或右)走2格,再向上(或下)走1格。不同的是,囯际象棋的Knight没有“绊马脚”的限制

2016-04-23 14:19:10 240

原创 搜索—Problem_1020-Prime Ring Problem

搜索—Problem_1020-Prime Ring Problem题意 有N个连续的自然数围成一圈,要求重新组合它们的顺序使得任意相邻两个数的和为素数。输出符合要求的顺序。 解题思路 采用DFS。很笨的方法,对当前一个数,展开DFS,把每一种可能的方法都罗列出来,由于所规定数不超过20,所以把40以内的素数都写到数组里,让两个数的和去跟它们比较是否相等就能判断是不是素数了,符合条件的放入数

2016-04-22 17:19:49 210

原创 搜索—Problem_1012-Rescue

搜索—Problem_1012-Rescue题意 营救angle,她被困在监狱里,监狱地形看作是N*M的矩阵,其中有墙,路以及卫兵。她的朋友们要去救她,只要其中任何一位朋友找到她即可。在营救过程中如果遇到卫兵需要杀死他才能通过继续前进,这种情况会用2个单位的时间,遇到墙不能走,其余的情况可以走,每移动一次消耗一个单位时间。如能营救成功,求营救的最小时间。否则输出“Poor ANGEL has t

2016-04-22 16:14:58 255

原创 搜索—Problem_1019-N皇后问题

搜索—Problem_1019-N皇后问题 题意 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上)。对于给定的N,求出有多少种合法的放置方法 解题思路 就是考虑皇后放置的位置,对于每一行,我们需要枚举每个可以放置皇后的位置, 而且需要判断当前位置(第i行)是否满足条件,即判断这个位置是否与放置好的前i-1

2016-04-18 21:35:50 287

原创 搜索—Problem_1013&1014-A strange lift

搜索—Problem_1013-A strange lift 题意 电梯每层有一个不同的数字,例如第n层有个数字k,那么这一层只能上k层或下k层,但是不能到达低于一层或高于n层的层数,给定起点与终点,要求出最少要按几次键才能到达目标层数。 解题思路 用BFS方法来做。对于当前所在楼层,有两种方案,上或下,且移动的楼层数为该层的指定数目,所以列出这两种情况,对每种情况在分别搜索,之道能到达目

2016-04-15 18:11:06 295

原创 搜索—Problem_1011-Oil Deposits

搜索—Problem_1011-Oil Deposits 题意 搜索石油块问题。题目说明,@代表有石油,*代表没有石油,而在一个有石油的地方它的周围8个方向的地方如果也有石油,那么这2块则石油是属于一块。,给出图,问图中有几块石油田。 解题思路 使用DFS搜索,首先搜索图中第一个出现@的位置,然后对其8个方向进行搜索,并对搜索过的为@进行标记,直到一次搜索结束则油田总数加一,最后的总数即为

2016-04-15 15:54:16 219

原创 搜索—Problem_1004-Toxophily

搜索—Problem_1004-Toxophily题意 射箭问题,Bob要用箭射树上的水果,已知Bob所在坐标为(0,0),输入水果坐标和箭发出的速度,求射箭时箭应该与水平x轴成多少度才能使箭可以射中水果。 解题思路 物理题,简单分析运动状态,箭射出后做曲线运动,加速度为g方向水平向下。如果射出的箭能够达到目标点(x,y)且到达的角度最小,那么到达这个点时,箭的竖直方向上的速度必然是0,或者

2016-04-12 16:52:47 234

空空如也

空空如也

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

TA关注的人

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