
ACM
lancefate
这个作者很懒,什么都没留下…
展开
-
专题四1006
题意:修路问题,给定一个地图,求最小花费。解题思路: 按照Kruskal算法构造最小生成树,先选择一个节点,然后不断向里面加入邻近的价格最便宜的点,最后输出总金钱数源码:#include #include #include #include #include #include using namespace std; const int inf = (原创 2016-06-24 14:26:35 · 455 阅读 · 0 评论 -
专题四1019
题意:给定一系列数对,然后不断的给出这样的数对,问有没有性别不对的情况。解题思路:并查集的简单应用,就是同性别的合并在一个集合中,然后每次输入看u,v是否在同一个集合中AC源码 #include #include #include #define N 2005 using namespace std; i原创 2016-07-06 11:50:05 · 311 阅读 · 0 评论 -
专题四1004
题意:给出村庄之间两两的距离,求任意两个村庄都连通,所要建设的公路最短长度解题思路:刚开始看到还以为是和第三题一样的,所以直接把第三题代码粘上去了,后来才发现不一样,读了一下题,和第一题差不多,第一题用的是kruskal,所以这题就试了一下prime。感想:虽然题很水,但是还是要照着课本写,还是不能独立写出来源码:#include using namespace原创 2016-06-19 10:46:03 · 361 阅读 · 0 评论 -
专题四1005
题意:给出任意两个村庄间修路的成本,以及是否修好了路,求任意两个村庄都连通的建路最小成本。解题思路:这道题乍一看和前面几个差不多,仔细一想,真的和前面那个题差不多,只是 把距离变成了成本,又多加了一个状态,首先想到的是能不能用上一题的算法,唯一的问题就是多了一个状态,只要把状态统一,那不就可以了吗,于是就想到了,只要状态是1的,把它们的成本都换成0,这样就和上一题一样了,然后,提交,超时,原创 2016-06-19 11:22:39 · 423 阅读 · 0 评论 -
专题四总结
图这章好难,幸好有点离散数学和数据结构的底子,不过刷题好辛苦,正好还赶上考试周。。。 图的定义: 很简单,G(V,E), V、E分别表示点和边的集合。 图的表示: 主要有两种,邻接矩阵和邻接表,前者空间复杂度,O(V2),后者为O(V+E)。因此,除非非常稠密的图(边非常多),一般后者优越于前者。图的遍历:原创 2016-07-04 10:39:51 · 272 阅读 · 0 评论 -
专题四1023
题意:有n个人坐在体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少错误解题思路找出出现冲突的位置,判断冲突很简单就是当两个人在同一行坐,同时他们到根节点的距离差值正好是他们之间的差值,此时就出现了冲突了。AC源码 #include #include using namespac原创 2016-07-04 10:30:56 · 266 阅读 · 0 评论 -
专题四1001
题意:给定N个村庄,及其连通情况,建造最少的路,使村庄全部连通,其中AB若连通,则AB之间有路或AC,CB之间有路解题思路:调用kruskal算法,求最小生成树的最小权值和感想:刚学完的数据结构,看到题还是不会写,就又去翻了下课本学习了一下,手敲了一个例子,算是加深了对数据结构的理解源码:#include#include#include#includeusi原创 2016-06-17 15:43:01 · 390 阅读 · 0 评论 -
ACM学习总结
ACM学习总结接触ACM也有一阵子了,刚开始感觉挺有意思的,寒假里老师发了一个刷题的网址,边学边刷了一阵子。 第一次刷题的时候,一看全都是英文的,内心是拒绝的,后来发现虽然看起来都市英文,但是好像都认识呀,也没什么大不了的。开学刚开始上ACM的时候,还是充满新鲜感的,下了课会第一时间去刷题,反反复复的调代码,有时候调的崩溃了,嘴上说着再也不调了,结果第二天还是第一时间打开电脑继续调,好吧,原创 2016-06-30 14:39:55 · 1646 阅读 · 1 评论 -
专题四1010
题意:从1走到2有最短路为定值,求最短路有几条解题思路:先求出最短路,然后搜索求出最短路的条数感想:明天就考试了。。。AC源码:#include#includeusing namespace std;typedef struct n1{ int distens,flog;}node;node N[1005];int map[1005][1原创 2016-06-30 14:31:40 · 422 阅读 · 0 评论 -
专题四1003
*题意:列出了每条道路直接连通的城镇。使全省任何两个城镇间都可达,问最少还需要建设多少条道路?*解题思路:赤裸裸的并查集*感想:课件上的原题*AC源码#include using namespace std;int bin[1002];int findx(int x){ int r=x; while(bin[r] !=r)原创 2016-06-12 11:21:20 · 409 阅读 · 0 评论 -
专题四1011
题意:最短的时间到达一个地方解题思路:我们将草儿的家看做0,从草儿家到相邻镇的花费看做0,那么我们就只需要求草儿家到各个目的地的最短路即可,一次Dijkstra就可以解决源码: #include #include #include using namespace std; const int inf = 1原创 2016-06-27 18:17:29 · 317 阅读 · 0 评论 -
专题三总结
这个专题的难度感觉并不大,主要是因为知道了要用动态规划去做,剩下的就只是写了。动态规划算法的效率主要与重复子问题的处理有关,比如最大公共子串问题啊,最关键的就是确定递推关系,写出状态转移方程。当然,这也是难点所在。有很多经典问题,比如最大公共字串:最大公共子串问题 这个是动态规划的基础题目。动态规划就是递推和重复子结构。确定了递推关系后。找到一个能极大地减少重复运算的子原创 2016-06-04 08:25:56 · 384 阅读 · 0 评论 -
专题三1011
*题意给出a,b两个数,求出从a到b的路线一共有多少种*解题思路这个题和上课时候讲的例题类似,看图可以发现,到达b[i]点的路线等于b[i-1]+b[i-2];所以只要先循环一遍,将不同距离的路线都用数组c记录下来,当输入a,b,的时候,只需要输出c[b-a]就可以,需要注意的是,用double记录结果,当b-a太大时,就会输出科学计数法表示的结果,所以要格式化输出结果*感原创 2016-05-08 11:10:28 · 396 阅读 · 0 评论 -
专题三1016
*题意在二维平面上。只能朝上左右走,不能朝下走,每次走一步,目的地是上方,求走n步的方案数*解题思路递归,和上一题是一样的解题思路,只是递归方程变成了f(n)=2*f(n-1)+f(n-2)*源码# include # includeusing namespace std;int main(){ double f[22]; int i,k,n;原创 2016-05-08 12:01:39 · 267 阅读 · 0 评论 -
专题三1017
*题意体积为V的背包,收集不同体积,不同价值的骨头,计算背包能装下的骨头的最大价值。*思路很明显是背包问题,原谅我直接用背包问题的解法做了*源码#include #include using namespace std; #define M 1009 typedef struct pack { in原创 2016-05-12 15:24:49 · 320 阅读 · 0 评论 -
专题三1003
*题意给定n个正整数标记的棋子,求这些棋子的上升子序列中标记和最大为多少*解题思路就是求上升子序列,然后将其中和最大的输出,用sun[i]记录每个棋子num[i]与其前面的棋子组成的上升子序列的和,通过判断后面的棋子num[i]是否大于前面的棋子num[j];大于则sum[i]+=num[j];用ans记录最大的sum[i];最后输出sum[i]即可*感想题目很长,但是大多数都原创 2016-05-22 10:51:21 · 426 阅读 · 0 评论 -
专题四1009
题意:给定n个点,m条路,求起点到终点的最短距离解题思路:刚开始不会做,就去看了下课件,发现课件里讲的floyd-washall算法正好就是适用于这道题的,所以就采用了floyd算法源码: #include #include using namespace std; int map[102][102],n; void flo原创 2016-06-23 14:36:53 · 655 阅读 · 0 评论